Dragos Rizescu Dragos Rizescu - 1 year ago 194
Bash Question

Check If Shell Script $1 Is Absolute Or Relative Path

As the title says, I am trying to determine if my bash script receives a full path or a relative file to a directory as a parameter.

For some reasons the following doesn't seem to work for me:



if [ "$DIR" = /* ]
echo "absolute"
echo "relative"

When I run my script with either a full path or absolute path it says:

./script.sh: line 5: [: too many arguments

For some reasons I can't seem to figure this bug. Any ideas?

Answer Source

[ ... ] doesn't do pattern matching. /* is being expanded to the contents of /, so effectively you have

if [ "$DIR" = /bin /boot /dev /etc /home /lib /media ... /usr /var ]

or something similar. Use [[ ... ]] instead.

if [[ "$DIR" = /* ]]; then
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download