Binary Operator Expected Error When Checking If a File with Full Pathname Exists

Binary Operator Expected Error When Checking If a File with Full Pathname Exists
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} ]];
2

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" ]
3

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

David Miller
Author

David Miller

David Miller brings 15 years of experience in global economics, personal finance strategy, and market dynamics. He specializes in turning complex economic trends into actionable insights for everyday readers.