[: =: unary operator expected
vaquitasos last edited by
Hi, I am getting this error when running my script.
$ ./forloop.sh ./forloop.sh: line 10: [: =: unary operator expected
#!/bin/bash for i in * do [ -d "$i" ] || continue Dirname="$i" echo $Dirname is a directory [ $i = rootfs ] && break done if [ $Dirname = rootfs ];then echo "Cannot continue processing rootfs found" fi
petulia3478 last edited by pangolinsos
@vaquitasos you are getting this because the last check you are doing
if [ $Dirname = rootfs ];then echo "Cannot continue processing rootfs found" fi
The $Dirname is empty, running your script through debug will show something like:
+ '[' = rootfs ']', it is because of this bash is giving you the error.
Try your script like this:
#!/bin/bash for Dirname in * do [ -d "$Dirname" ] || continue echo "$Dirname" is a directory [ "$Dirname" = rootfs ] && break done if [ "$Dirname" = rootfs ];then echo "Cannot continue processing rootfs found" fi
Make your for loop variable, the actual variable you are going to use, instead of reassigning $i to $Dirname, put double quotes around $Dirname. You have to be careful when using single square brackets and double quotes.
vaquitasos last edited by vaquitasos
@petulia3478 Hey there! thanks for the tips on this, really useful.
© Lightnetics 2022