到目前为止 我有以下代码:
#!/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”
发生什么事了?
最佳答案
您缺少一些空格。基本上,如果您尝试使用 [...]
结构,则需要在每个括号之前和之后都有空格 - 将 [
视为命令的名称,与 echo
相同,将 ]
视为该命令的参数。 (事实上,您的系统上实际上可能有一个 /bin/[
程序。)正如您无法键入 echofoo
并期望它运行 echo
程序一样,如果您期望它运行 [
,也无法键入 [[$#
]。
就您而言,您需要执行以下操作
if [ $# -eq 2 ]; ...
对于您在第 3 行中进行的复合测试,我认为您不能在测试中使用 [
和 ]
。换句话说,不要使用这些括号进行分组;它必须是[something]
,其中something
不包含任何括号。请阅读 bash 手册页的相关部分,了解您可以在其中放置的内容的完整详细信息。
还有一个 shell 构造 [[ ... ]]
,它基本上执行相同的操作,但具有不同的语法。您可以使用它来代替,但请注意它与 [ ... ]
有很大不同。
关于linux - 在linux中添加一两个目录到PATH变量(使用Bash脚本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46334221/