bash 脚本:设置的参数值不正确

dot*_*dot 4 bash getopts variable

问题

我有一个接受几个不同(可选)命令行参数的脚本。对于一个特定的论点,我得到了“less”的值,但我不知道为什么。

重击代码

while getopts ":d:f:p:e:" o; do
  case "${o}" in
        d)
            SDOMAIN=${OPTARG}
            ;;
        f)
            FROM=${OPTARG}
            ;;
        p)
            PAGER=${OPTARG}
            ;; 
        e)
            DESTEXT=${OPTARG}
            ;;                       
        *)
            show_usage
            ;;          
    esac
done

source "./utils.sh"
test #test includes

echo "$SDOMAIN is the sdomain"
echo "$FROM is the from"
echo "$PAGER is the pager"
echo "$DESTEXT is the extension"

exit
Run Code Online (Sandbox Code Playgroud)

输出

当我运行我的脚本时,这是我看到的:

lab-1:/tmp/jj# bash mssp.sh -d testdomain.net         
Utils include worked!                                       
testdomain.net is the sdomain                                               
 is the from                                                                    
less is the pager                                                               
 is the extension                                 
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我在寻呼机中得到“更少”的价值。我希望看到空字符串。如果你能看到我的错误,请告诉我。我已经看这个太久了。

Jef*_*ler 10

您的脚本从不设置 PAGER,但该变量可能是从您当前的环境中导出的;与declare -p PAGER.

我建议在脚本中使用不同的变量名;这就是为什么一般建议不要使用大写变量作为您自己的变量。