Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Checking if the first argument passed to a bash script is set?

Tags:

linux

bash

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

like image 695
Ole Avatar asked Mar 13 '23 05:03

Ole


1 Answers

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'
like image 184
John1024 Avatar answered Apr 08 '23 04:04

John1024