到目前为止,我有以下代码:
#!/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”
有事吗?
你少了一些空格。基本上,如果您试图使用[...]
结构,则需要在每个括号前后都有空格--将[
视为命令的名称,与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提供更好的替代方法时,没有理由使用它。