这个脚本得到一个错误:
elif [ $operation = "man" ]; then
if [ $aug1 = "add" ]; then # <- Line 75
echo "Man Page for: add"
echo ""
echo "Syntax: add [number 1] [number 2]"
echo ""
echo "Description:"
echo "Add two different numbers together."
echo ""
echo "Info:"
echo "Added in v1.0"
echo ""
elif [ -z $aug1 ]; then
echo "Please specify a command to read the man page."
else
echo "There is no manual page for that command."
fi
我得到这个错误:
calc_1.2: line 75: [: =: unary operator expected
如果您知道自己总是要使用Bash,那么总是使用双括号条件复合命令[[…]会容易得多。]],而不是posix兼容的单括号版本[…]]. 在一个[[…]]复合,分词和路径名展开不应用于单词,因此您可以依赖
if [[ $aug1 == "and" ]];
将$aug1的值与字符串和进行比较。
如果你用[…],你总是需要记住双引号变量,像这样:
if [ "$aug1" = "and" ];
如果你不引用变量展开,变量没有定义或为空,它就会从犯罪现场消失,只留下
if [ = "and" ];
这不是一个有效的语法。(如果$aug1包含空格或shell元字符,它也会失败,并发出不同的错误消息。)
现代的[[操作符有许多其他不错的特性,包括正则表达式匹配。
如果您知道自己总是要使用Bash,那么总是使用双括号条件复合命令[[…]会容易得多。]],而不是posix兼容的单括号版本[…]]. 在一个[[…]]复合,分词和路径名展开不应用于单词,因此您可以依赖
if [[ $aug1 == "and" ]];
将$aug1的值与字符串和进行比较。
如果你用[…],你总是需要记住双引号变量,像这样:
if [ "$aug1" = "and" ];
如果你不引用变量展开,变量没有定义或为空,它就会从犯罪现场消失,只留下
if [ = "and" ];
这不是一个有效的语法。(如果$aug1包含空格或shell元字符,它也会失败,并发出不同的错误消息。)
现代的[[操作符有许多其他不错的特性,包括正则表达式匹配。