我正在尝试查看传递给我的脚本的第一个参数是否已设置。我使用此处找到的说明创建了一个测试: How to check if a variable is set in Bash?
这是我的脚本:
var=$1
if [ -z ${var+x} ]; then echo "var is unset"; else echo "var is set to '$var'"; fi
假设我在没有任何参数的情况下运行它:
ole@MKI:./test.sh
var is set to ''
假设我用一个参数运行它:
ole@MKI:./test.sh foo
var is set to 'foo'
在这两种情况下,它都不会报告 var 未设置。
想法?
TIA, 奥莱
最佳答案
问题出在这一行:
var=$1
这会设置 var
并且无论是否设置了 $1
都会这样做。解决方案是测试$1
:
if [ -z ${1+x} ]; then echo "var is unset"; else echo "var is set to '$1'"; fi
这种方法有效:
$ test.sh
var is unset
$ test.sh a
var is set to 'a'
关于linux - 检查是否设置了传递给 bash 脚本的第一个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37378142/