[英]Assistance With Simple Bash Script
我正在嘗試編寫我的第一個Bash腳本。 我正在嘗試創建一個腳本來啟動我的主要流浪漢VM,以便我可以從任何目錄啟動它。 這是我到目前為止:
#!/bin/bash
if [[ -n "$1" ]];
then
if [["$1" == "up"]];
then cd /home/user/DevEnv && vagrant up;
elif [["$1" == "halt"]];
then cd /home/user/DevEnv && vagrant halt;
fi
else
echo "Must pass up or halt to script";
fi
當我運行這個時,我得到以下輸出
user@Debian ~ $ dev
Must pass up or halt to script
user@Debian ~ $ dev up
/home/user/bin/dev: line 5: [[up: command not found
/home/user/bin/dev: line 7: [[up: command not found
user@Debian ~ $ dev halt
/home/user/bin/dev: line 5: [[halt: command not found
/home/user/bin/dev: line 7: [[halt: command not found
最后其他人似乎能正常運行,但之后的命令then
似乎顛沛流離之后被打破。 我假設我做的事情很簡單。 我最終希望將參數作為變量,然后將變量傳遞給vagrant,但現在看起來更復雜了。
你需要空格來將[[
和]]
與它們之間的代碼分開。 例如:
elif [[ "$1" == "halt" ]];
then cd /home/user/DevEnv && vagrant halt;
fi
這也是case
語句的一個很好的用途:
case "$1" in
up)
cd /home/user/DevEnv && vagrant up
;;
halt)
cd /home/user/DevEnv && vagrant halt
;;
*)
echo "Must pass up or halt to script"
;;
esac
你的尾隨;
沒用。 我也無法理解為什么你把then
在那兒,你可以把它們放在同一行的條件。 此外,為什么你的括號加倍? 我還被告知你需要括號內的空格。 您的代碼如下所示:
#!/bin/sh
if [ -n "$1" ]; then
if [ "$1" = "up" ]; then
cd /home/user/DevEnv && vagrant up
elif [ "$1" = "halt" ]; then
cd /home/user/DevEnv && vagrant halt
fi
else
echo "Must pass up or halt to script"
fi
這就是我寫我的bash腳本的方式,但你可以保持then
S於單獨的行。 如果這樣做,您可以刪除分號。
我不使用vagrant
,所以我無法檢查你的腳本,但是我給你的版本應該正常運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.