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.
Error Message If you see binary operator expected , the command has failed to complete properly.
The word unary is basically synonymous with “single.” In the context of mathematics, this could be a single number or other component of an equation. So, when Bash says that it is expecting a unary operator, it is just saying that you are missing a number in the script.
The not equal function in Ubuntu bash is denoted by the symbol “-ne,” which would be the initial character of “not equal.” Also included is the “! =” operator that is used to indicate the not equal condition.
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" ]
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} ]];
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With