当前位置: 首页 > 知识库问答 >
问题:

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

薛望
2023-03-14

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

    #!/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:line 3:[[1:command not found./adddir:line 3:[1:command not found”

当我使用2个参数而不是“1”运行它时,它会显示为“2”

有事吗?

共有1个答案

艾正浩
2023-03-14

你少了一些空格。基本上,如果您试图使用[...]结构,则需要在每个括号前后都有空格--将[视为命令的名称,与echo的方式相同,将]视为该命令的参数。(实际上,您的系统上可能有一个/bin/[程序。)正如您不能键入echofo并期望它运行echo程序一样,同样,如果您期望它运行[,您也不能键入[[$#

在你的情况下,你需要做一些事情

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

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

还有一个shell构造[[...]],它做的事情基本相同,但语法不同。您可以改用它,但要注意它与[...]有很大的不同。

 类似资料:
  • 我有个 bash 脚本,伪代码如下: 我想请问一下我第二次 export https_proxy 能达到清空这个变量的值的目的吗?因为之后的下载我不想走代理,我这个写法能否达到我的期望呢?谢谢。

  • 问题内容: 有人可以告诉我如何摆脱BeanCreationException吗? 在向Owner.java中添加两个变量之后,我得到了BeanCreationException,如下所示: 我还添加了用于猫和狗的getter和setter方法,以及将猫和狗作为宠物子集填充的方法,如下所示: 当我在Eclipse中在服务器上运行方式为…运行时,应用程序无法初始化,并显示以下错误消息: 这是busin

  • 问题内容: 我正在尝试从我的Perl程序中运行Bash命令。但是Perl似乎使我的Bash $ PWD环境变量与Perl变量混淆了。 我如何才能将其全部读取为字符串? 这就是我要运行的 这些反引号在Bash中运行第二行。使用System()会产生相同的问题。 有任何想法吗? 问题答案: 这里有两个查询,关于使用Bash变量和运行外部命令。 Perl中有哈希,带有环境变量 但是,通常最好在脚本中使用

  • 问题内容: 我有一个示例Java项目包 打包com.example.testing; 用这样的文件树 和gradle脚本: 现在我想向该项目中添加一些模块,我的文件夹将是这样的 如何在gradle脚本中添加新的源代码? 问题答案: 我同意@JB Nizet关于遵守标准约定的意见。如果您仍然坚持要成为无政府主义者: 您已经在源集中声明了,为什么不还要添加并且呢?您可以将它们添加到相同的源集,也可以根

  • 我有一个java项目包示例 程序包com。实例测试; 使用这样的文件树 和一个gradle脚本: 现在,我想添加一些模块到这个项目和我的文件夹将是这样的东西 如何向gradle脚本添加新的源代码?

  • 问题内容: 我正在使用zsh,并且尝试向变量添加新的条目(),但我不知道如何。 最让我困惑的是,我的文件中没有对变量的单一引用,而是返回: 因此,在某处设置了变量。 问题答案: 这里: 编辑 :这确实有效,但是下面的ony答案更好,因为它利用了ZSH为像这样的变量提供结构化接口的优势。这种方法是的标准方法,但据我所知,当ZSH提供更好的替代方法时,没有理由使用它。