在linux中为PATH变量添加一个或两个目录(使用Bash脚本)

时间:2017-09-21 01:56:54

标签: linux bash ubuntu

到目前为止 我有以下代码:

    #!/bin/bash
    echo "Adding new path...."
    if [[$# -eq1] || [$# -eq2]] 
    then
    if [$# -eq2] 
    then
    export PATH=$PATH:/$1:/$2
    fi
    if [$# -eq1] 
    then
    export PATH=$PATH:/$1
    fi
    else echo "Incorrect number of parameters. No more than two     directories can be added at once."
    fi
     echo $PATH
     exit 0

当我运行此脚本传递一个参数时,我收到一个错误: " ./ addDir:第3行:[[1:命令未找到 ./addDir:第3行:[1:未找到命令"

当我使用2个参数而不是" 1"它说" 2"

发生了什么?

1 个答案:

答案 0 :(得分:2)

你错过了一些空格。基本上,如果您尝试使用[...]构造,则需要在每个括号前后都有空格 - 将[视为命令的名称,方式与echo]作为该命令的参数。 (事实上​​,您的系统上可能确实存在/bin/[程序。)正如您无法键入echofoo并期望它运行echo程序一样,您也可以如果您希望它运行[[$#,请输入[

在您的情况下,您需要执行

之类的操作
if [ $# -eq 2 ]; ...

对于您在第3行进行的复合测试,我认为您不能在测试中使用[]。换句话说,不要使用这些括号进行分组;它必须是[ something ] something不包含任何括号。阅读bash手册页的相关部分,了解可以放置的详细信息。

还有一个shell构造[[ ... ]],它基本上做同样的事情,但语法不同。您可以使用它,但要注意它与[ ... ]非常不同。