I'm attempting to see whether the first argument passed to my script is set. I used the instructions found here to create a test: How to check if a variable is set in Bash?
Here's my script:
var=$1
if [ -z ${var+x} ]; then echo "var is unset"; else echo "var is set to '$var'"; fi
Suppose I run it without any arguments:
ole@MKI:./test.sh
var is set to ''
Suppose I run it with an argument:
ole@MKI:./test.sh foo
var is set to 'foo'
In neither case does it report that the var is unset.
Thoughts?
TIA, Ole
The problem is with this line:
var=$1
This sets var
and it does so regardless of whether $1
is set or not. The solution is to test $1
:
if [ -z ${1+x} ]; then echo "var is unset"; else echo "var is set to '$1'"; fi
This approach works:
$ test.sh
var is unset
$ test.sh a
var is set to 'a'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With