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

Adding one or two directories to PATH variable in linux ( Using Bash script)

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    #!/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:line 3:[1:找不到命令"

当我用2个参数而不是"1"运行它时,它会说"2"

发生什么事?


您缺少一些空间。基本上,如果你试图使用[...]结构,你需要在每个括号前后都有空格-把[看作是一个命令的名称,就像echo]作为该命令的论点一样。(实际上,您的系统上可能实际上有一个/bin/[程序。)正如您不能键入echofoo并期望它运行echo程序一样,如果您希望它运行[则不能键入[[$#

在你的情况下,你需要做像

1
if [ $# -eq 2 ]; ...

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

还有一个shell构造[[ ... ]],它的作用基本相同,但语法不同。你可以用它来代替,但是要注意它与[ ... ]有很大的不同。