Shell脚本(如果未评估条件以显示用户的帮助信息)

skr*_*mit 0 linux bash shell

我编写了一个帮助菜单,以供参考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
Run Code Online (Sandbox Code Playgroud)

当我执行`myscript.sh -h'(或任何' - '前缀选项)时,它会进入if条件,但任何其他参数都没有.我在这做错了什么?我是bash脚本的新手.

Kar*_*oop 6

你的两个简单问题if:

但是:我建议使用getopts而不是字符串比较.这将使部件更加健壮,处理参数的不同排序,或者将一个字母参数组合成单个参数.