bash – 一元运算符

前端之家收集整理的这篇文章主要介绍了bash – 一元运算符前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在试图弄清楚这是什么问题,但只是不能算出来。

这是部分似乎得到一个错误..

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相关文章