[英]Bash script with arguments
我對 bash 沒有經驗。 我正在嘗試在 mac 上編寫 bash 腳本來幫助運行 flutter 開發環境。 我正在使用 select 環境類型的標志選項,然后在最后腳本將告訴 flutter 使用什么 ip 地址。
function main(){
check $@
local ip = "localhost"
if [ $android ]
then
if [ $device ]
then
echo "Running On Android Device"
$ip = $(ipconfig getifaddr en0)
else
echo "Running On Android Simulator"
$ip = "10.0.2.2"
fi
else
if [ $device ]
then
echo "Running On IOS Device"
$ip = $(ipconfig getifaddr en0)
else
echo "Running On IOS Simulator"
$ip = "localhost"
fi
fi
echo "IP: $ip"
flutter run --dart-define="IP=$ip"
}
function check(){
local OPTIND opt i
while getopts ":p:d" opt; do
case $opt in
p) platform $OPTARG;;
d) device;;
/?) help;exit 1 ;;
:) echo "Option -$OPTARG requires an argument.";exit 1 ;;
*) echo "Invalid option: -$OPTARG";exit 1 ;;
esac
done
}
function platform(){
if ["$1" == "android"] || ["$1" == "a"]
then android = true
elif ["$1" == "ios"] || ["$1" == "i"]
then android = false
else echo "Invalid platform, running on android by default"
fi
}
function device(){
device = true
}
function help(){
echo "This script only accepts the following options:"
echo "-p [android|a|ios|i] : select android platform"
echo "-d : run on actual device"
}
main $@
但是這個腳本失敗了,不知道為什么:
% bash run.sh -p a -d
run.sh: line 50: [a: command not found
run.sh: line 50: [a: command not found
run.sh: line 52: [a: command not found
run.sh: line 52: [a: command not found
Invalid platform, running on android by default
zsh: segmentation fault bash run.sh -p a -d
並沒有花太多時間,但我發現了兩個主要錯誤。 我建議使用正確的 IDE,這樣您就不必花太多時間調試語法問題。
=
周圍沒有空格ip=$(ipconfig getifaddr en0)
if [ "$1" == "android" ] || [ "$1" == "a" ]
function main(){
check $@
local ip="localhost"
if $android
then
echo "Android true"
if $device
then
echo "Androind and device true"
echo "Running On Android Device"
ip=$(ipconfig getifaddr en0)
else
echo "Androind true and device false"
echo "Running On Android Simulator"
ip="10.0.2.2"
fi
else
if $device
then
echo "Running On IOS Device"
ip=$(ipconfig getifaddr en0)
else
echo "Running On IOS Simulator"
ip="localhost"
fi
fi
echo "IP: $ip"
# flutter run --dart-define="IP=$ip"
}
function check(){
local OPTIND opt i
while getopts ":p:d" opt; do
case $opt in
p) platform $OPTARG;;
d) device;;
/?) help;exit 1 ;;
:) echo "Option -$OPTARG requires an argument.";exit 1 ;;
*) echo "Invalid option: -$OPTARG";exit 1 ;;
esac
done
}
function platform(){
echo "inside platform "
if [ "$1" == "android" ] || [ "$1" == "a" ]; then
echo "android"
android=true
elif [ "$1" == "ios" ] || [ "$1" == "i" ]; then
echo "ios"
android=false
else
echo "Invalid platform, running on android by default"
fi
}
function device(){
device=true
}
function help(){
echo "This script only accepts the following options:"
echo "-p [android|a|ios|i] : select android platform"
echo "-d : run on actual device"
}
main $@
跑步
─ bash test.sh -p i -d
inside platform
ios
Running On IOS Device
IP: 192.168.1.113
╰─ bash test.sh -p a -d
inside platform
android
Android true
Androind and device true
Running On Android Device
IP: 192.168.1.113
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.