binary operator expected error when checking if a file with full pathname exists

后端 未结 2 1898
春和景丽
春和景丽 2020-12-10 13:45
pathname=$(cat $HOME/.rm.cfg)
if [ ! -z $pathname/$1 ]

.rm.cfg is a file that contains the following directory

相关标签:
2条回答
  • 2020-12-10 13:54

    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" ]
    
    0 讨论(0)
  • 2020-12-10 14:07

    I had faced same error binary operator expected where I am getting more then one word for some variable.when I used it as mention below.

    if [ ! -z ${variable} ];
    

    So for resolve this error I changed it to :

    if [[ ! -z ${variable} ]];
    
    0 讨论(0)
提交回复
热议问题