Spe*_*cer 3 unix macos bash shell scripting
我正在尝试编写一个简单的shell脚本,如果有的话,打印出第一个参数,如果没有则打印"none".该脚本名为test.sh
if [$1 = ""]
then
echo "none"
else
echo $1
fi
Run Code Online (Sandbox Code Playgroud)
如果我在没有参数的情况下运行脚本,一切正常.但是,如果我运行此命令source test.sh -test,我会-bash: [test: command not found在脚本继续运行并正确回声测试之前收到此错误.我究竟做错了什么?
你需要在'[',']'之前/之后的空格,即
if [ "$1" = "" ] ; then
#---^---------^ here
echo "none"
else
echo "$1"
fi
Run Code Online (Sandbox Code Playgroud)
并且您需要使用上面编辑的引号将您的引用(实际上所有引用)包装到$ 1.
修复之后,您可能还需要提供脚本的相对路径,即
source ./test.sh -test
#------^^--- there
Run Code Online (Sandbox Code Playgroud)
当你得到一个shell错误信息时,你在这里几乎总是有帮助在set -vx导致你麻烦的行之前打开shell调试,或者非常靠近你的脚本.然后,您可以看到正在执行的每行/代码块,以及shell正在使用的变量的值.
我希望这有帮助.
| 归档时间: |
|
| 查看次数: |
5770 次 |
| 最近记录: |