如何在 bash 腳本中使用 switch case 語句來執行不同的操作?

阿薩德·賈維德

我有這個腳本,它當前正在啟動一個工具的圖形用戶界面。我想在 switch case 中添加另一個功能,即在需要時終止該工具。現在我有不同的腳本這樣做。我想整合點點滴滴。

目前,我的腳本如下所示:

#!/bin/bash

tart_array=($1)

ip=()
tarts=()

for i in ${tart_array[@]}; do
        echo "Tart #: $i"
        case "$i" in

                1)
                IP=10.171.0.10
                ;;
                2)
                IP=10.171.0.11
                ;;
                3)
                IP=10.171.0.12
                ;;
                4)
                IP=10.171.0.13
                ;;
                5)
                IP=10.171.0.14
                ;;
                *)
                echo "Invalid TARTS '$i'" >&2;
                exit
                ;;
        esac
        ip+=(${IP=[i]})
#       echo "$ip"
        tarts=(${tart_array[@]})
#       echo "$tarts"
        echo "    ----  Launching Tart $i  ----  "
                sshpass -p "tart123" ssh -Y -X -L 5900:$IP:5901 tarts@$IP <<EOF1
                  export DISPLAY=:1
                gnome-terminal -e "bash -c \"pwd; cd /home/tarts; pwd; ./launch_tarts.sh exec bash\""
                exit
EOF1
done

就像Launching TARTS 一樣,我想在上面的 switch case 語句中添加Killing TARTS只是例如殺死我正在做的工具:

 echo "Killing Tart $i"
                        sshpass -p "tart123"  ssh -tt -o StrictHostKeyChecking=no [email protected] <<EOF
                        . ./tartsenvironfile.8.1.1.0
                        nohup yes | kill_tarts mcgdrv &
                        nohup yes | kill_tarts server &
                        pkill -f traf
                        pkill -f terminal-server
                        exit
EOF

有人可以指導我如何使用相同的開關案例在我的腳本中集成啟動和終止功能嗎?

您可以使用函數。您可以將ip地址放在一個數組中,使用相應的tart編號作為索引。如果您需要驗證 1-5,您還可以利用字符集。

這是我認為您正在了解的內容的粗略概述。使用如:tart-tool kill 1 3 2我不完全理解你的目標,但也許它會給你一些想法。

#!/bin/bash

launch_tart () {
    local tart=$1
    local ip=${ip[tart]}

    echo "launching tart $tart…"
    sshpass tarts@$ip # etc
}

kill_tart () {
    local tart=$1
    local ip=${ip[tart]}

    echo "killing tart $tart…"
    sshpass tarts@$ip # etc
}

ip[1]=10.171.0.10
ip[2]=10.171.0.11
# etc

case $1 in
    kill) function=kill_tart;;
    launch) function=launch_tart;;
    *) exit 1
esac

shift

for tart in "$@"; do
    [[ "$tart" == [1-5] ]] || { echo error >&2; exit 1; }

    $function $tart
done

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 bash 腳本中使用 jq 語法?

如何在Java中使用Switch case

如何在PHP中使用switch case?

如何在不同的 switch case 语句中使用对象的类成员函数?

如何在Dart中使用Switch Case语句

如何在 onSelected/onTap 中使用 switch case

如何在bash case语句中使用条件构造?

如何在使用 Hooks 的 React 函数中编写 switch case

如何在 ReactJs 中缩短代码而不是使用 Switch case

如何從使用 bash 腳本運行的 C 程序中獲取變量的值?

如何在 Makefile 变量赋值中运行 shell/bash switch case?

如何在使用JavaScript的switch case语句中使用范围?

如何在 C# regex switch/case 中使用命名组?

如何在C#中的泛型类型参数中使用Switch ... Case?

如何在 Golang 中使用可空字符串 (*string) 的 switch case?

如何在PHP中使用if-else if或switch-case与数据库元素?

我如何在 switch case 中使用字符串作为动作?

如何避免在Go中使用长的switch-case语句

如何使用 Switch Case 路由动态 URL?

如何使用react重构switch case的代码?

不使用 SWITCH CASE 的条件操作

如何在 AWS CloudFormation 模板中運行 bash 腳本

如何在 Mac 上從 Dockerfile 運行 bash 腳本

如何在gdbinit腳本中使用python

如何在swiftui中优化switch case

如何從 ViewBinding 獲取 ID 以將其與 switch case 語句一起使用?

如何從 bash 執行動態生成的 perl 腳本?

如何在不同条件下的SQL中使用CASE

SQL 语句 - 如何在不同的 SELECT 中使用多个 CASE?