检查是否存在具有完整路径名的文件时,二元运算符预期错误

use*_*938 12 unix

pathname=$(cat $HOME/.rm.cfg)
if [ ! -z $pathname/$1 ]
Run Code Online (Sandbox Code Playgroud)

.rm.cfg 是包含以下目录的文件

/家/用户名/ deleted1

$1是文件的名称,例如.玻璃

为什么该行如果[ ! -z $pathname/$1 ]给出二元运算符预期的错误.

chr*_*ney 25

看起来您的$ pathname包含多个单词.您的.rm.cfg文件中可能有多行,或者路径可能包含空格.无论如何,你最终得到了

if [ ! -z word word word/$1 ]
Run Code Online (Sandbox Code Playgroud)

这不好.如果您只是期望单个路径并希望防止包含空格的路径,请将if行更改为

if [ ! -z "$pathname/$1" ]
Run Code Online (Sandbox Code Playgroud)


San*_*jay 19

我曾经遇到过相同的错误二元运算符,我在某个变量中得到更多的单词.当我在下面提到它时使用它.

if [ ! -z ${variable} ];
Run Code Online (Sandbox Code Playgroud)

因此,为了解决此错误,我将其更改为:

if [[ ! -z ${variable} ]];
Run Code Online (Sandbox Code Playgroud)