作者:玉米的跟屁虫 | 来源:互联网 | 2022-12-05 15:42
我编写了一个帮助菜单,以供参考shell脚本的使用 my_script.sh
echo $'\n\n'
echo $(printf '=%.0s' {1..100})
printf ' %.0s' {1..40}
echo "Welcome"
echo $(printf '=%.0s' {1..100})
echo $'\n'
arg=$1
echo "Input : $arg"
echo
if [[ arg -eq "-h" ]] || [[ arg -eq "-H" ]] || [[ arg -eq "-help" ]] || [[ arg -eq "-Help" ]] || [[ arg -eq "--h" ]] || [[ arg -eq "--H" ]] || [[ arg -eq "--help" ]] || [[ arg -eq "--Help" ]]; then
echo "Help menu requested...."
echo $'\n\n'
echo $(printf '~%.0s' {1..100})
printf ' %.0s' {1..43}
echo "Help Menu"
echo $(printf '~%.0s' {1..100})
echo $'\n'
exit 0
else
echo "Executing a program...."
./another_script.sh
fi
当我执行`myscript.sh -h'(或任何' - '前缀选项)时,它会进入if条件,但任何其他参数都没有.我在这做错了什么?我是bash脚本的新手.
1> Karsten Koop..:
你的两个简单问题if
:
-eq
用于整数比较,=
或==
用于字符串
使用$arg
您的if
(而非arg
).
但是:我建议使用getopts
而不是字符串比较.这将使部件更加健壮,处理参数的不同排序,或者将一个字母参数组合成单个参数.