我写了一个帮助菜单来引用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 脚本的新手。
最佳答案
if
的两个简单问题:
-eq
is for integer comparison ,=
或==
用于字符串- 在
if
中使用$arg
(而不是arg
)。
但是:我建议使用 getopts
而不是字符串比较。这将使该部分更健壮,处理参数的不同排序,或者当一个字母参数组合成一个参数时。
关于linux - Shell 脚本(如果未评估条件以显示给用户的帮助信息),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52203944/