2013-08-02 145 views
0

试图写一个bash,如果定义了环境变量中指定要使用的命令。这样做如下:Bash没有这样的文件或目录

if [ -z $MY_DIFF ]; 
then 
    echo Using standard diff $(which diff), change MY_DIFF env variable to use a different one. 
    echo $(which diff) 
    $diffv=$(which diff) 
else 
    $diffv=$MY_DIFF 
fi 

$diffv c.xml c2.xml 

但我发现了:

./bash.sh: line 10: =/opt/gnu/bin/diff: No such file or directory 
./bash.sh: line 13: c.xml: command not found 

我敢肯定,该文件存在,我也有权执行。任何想法可能是什么问题?

+0

您可以包括行号更清楚地显示在错误指向? –

+2

您在diff路径前有一个'='。 – blackSmith

+0

请勿在作业左侧使用$(在脚本上运行时,这是从[ShellCheck](http://www.shellcheck.net)输出的文字)。 –

回答

3

删除diffv之前的额外$分配。用途:

diffv=$(which diff) 

和:

diffv=$MY_DIFF 

随着$你:

<diffv value, empty>=<MY_DIFF value, or which diff> 
=/opt/gnu/bin/diff 
相关问题