pathname=$(cat $HOME/.rm.cfg)
if [ ! -z $pathname/$1 ]
.rm.cfg is a file that contains the following directory
/home/username/deleted1
$1 is the name of a file eg. glass
why does the line if [ ! -z $pathname/$1 ] give a binary operator expected error.
2 Answers
I had faced the same error (binary operator expected) when receiving more than one word for some variable when using it as shown below:
if [ ! -z ${variable} ];
So to resolve this error I changed it to:
if [[ ! -z ${variable} ]];
Looks like your $pathname includes more than one word. Could be multiple lines in your .rm.cfg file, or perhaps the path includes spaces. Anyway, you end up with
if [ ! -z word word word/$1 ]
which is no good. If you're just expecting a single path and want to protect against the path containing whitespace, change your if line to
if [ ! -z "$pathname/$1" ]