我是Bash脚本的新手,试图制作我的第一个备份脚本。当我运行它时,我总是得到这样的东西:
using namespace
我尝试了很多不同的语法,比如./backupscript.sh: line 9: [3=1: command not found
./backupscript.sh: line 9: 3=2]: command not found
./backupscript.sh: line 15: [3=1: command not found
./backupscript.sh: line 15: 3=3]: command not found
,双括号,没有引号,()-brackets single和double,我失去了理智。似乎bash根本没有认识到它是一个if语句。怎么了?谢谢!
["var"="1"]||["var"=2]
编辑:这里建议的正确语法做了诀窍,谢谢大家!我还在寻找关于Bash的好导游:)
答案 0 :(得分:0)
使用以下作为最佳做法:
if [[ $choice == 1 || $choice == 2 ]]; then
...
fi
请注意spaces
和==
进行相等测试。
||
和&&
在double brackets
中工作。还有一些其他不错的功能,例如与REGEX
匹配的=~
以及C-like languages
中已知的运算符以及较少的意外。
答案 1 :(得分:0)
正如@fedorqui所说,你需要在括号周围留出空格。这是因为[
实际上是test
的同义词,是一个真正的程序,实际命令的名称也是如此。
为了让您的生活更轻松,请改用空格和双括号([[
和]]
)。这些是由bash内部处理的,并且对于意外错误(例如忘记变量替换周围的引号)更加强大。另外,&&
和||
在双括号中作为逻辑AND和OR,但在单括号中不 - 您必须使用-a
和{{1而不是-o
个表达式。
在bash中使用双括号("conditional expressions"),您可以写:
[ ]
并获得您期望的结果。