Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何在BASH脚本中比较字符串?_String_Bash_Command Line_Terminal - Fatal编程技术网

String 如何在BASH脚本中比较字符串?

String 如何在BASH脚本中比较字符串?,string,bash,command-line,terminal,String,Bash,Command Line,Terminal,我只想知道如何读取字符串,然后比较它。如果是“加号”,则继续 #!/bin/bash echo -n Enter the First Number: read num echo -n Please type plus: read opr if [ $num -eq 4 && "$opr"= plus ]; then echo this is the right fi 如果您使用的是bash,那么我强烈建议使用双括号。它们比单括号好得多;例如,它们处理不带引号的变

我只想知道如何读取字符串,然后比较它。如果是“加号”,则继续

#!/bin/bash 

echo -n Enter the First Number:
read num
echo -n Please type plus:
 read opr


if [ $num -eq 4 && "$opr"= plus ]; then

echo this is the right


fi
如果您使用的是bash,那么我强烈建议使用双括号。它们比单括号好得多;例如,它们处理不带引号的变量更加合理,您可以在括号内使用
&&

如果使用单括号,则应写下:

if [ "$num" -eq 4 ] && [ "$opr" = 'plus' ]; then
    echo 'this is the right'
fi
如果您使用的是bash,那么我强烈建议使用双括号。它们比单括号好得多;例如,它们处理不带引号的变量更加合理,您可以在括号内使用
&&

如果使用单括号,则应写下:

if [ "$num" -eq 4 ] && [ "$opr" = 'plus' ]; then
    echo 'this is the right'
fi

我相信OP希望将opr与字符串“plus”进行比较,而不是与运算符“+”;)进行比较谢谢,这真的很有用。我相信OP希望opr与字符串“plus”比较,而不是运算符“+”;)谢谢这真的很有用它是
=
,不是
=
,而且不需要额外的引号是的,我想使用POSIX样式,即
=
[…]
。在
[…]
中,我同意建议使用
=
。使用引号可以避免混淆,是一种很好的做法,尤其是当您有一些特殊字符时。对于像plus这样的字符串,它是可选的。在
[]
中,
=
是必需的,而不仅仅是推荐的。我同意引用是一种很好的做法,但你的评论给人的印象是,额外的引用将解决OP的问题。一般来说,我认为最好在答案中添加一些解释,而不仅仅是转储代码。大多数现代bash shell都允许在
[]
以及
[[[]]
中使用
=
。没错,我没有注意到问题只有
bash
标记。我在考虑一个“标准”shell。它是
=
,而不是
=
,并且不需要额外的引号是的,我想使用POSIX样式,即
=
[…]
。在
[…]
中,我同意建议使用
=
。使用引号可以避免混淆,是一种很好的做法,尤其是当您有一些特殊字符时。对于像plus这样的字符串,它是可选的。在
[]
中,
=
是必需的,而不仅仅是推荐的。我同意引用是一种很好的做法,但你的评论给人的印象是,额外的引用将解决OP的问题。一般来说,我认为最好在答案中添加一些解释,而不仅仅是转储代码。大多数现代bash shell都允许在
[]
以及
[[[]]
中使用
=
。没错,我没有注意到问题只有
bash
标记。我在想一个“标准”的外壳。
if [ "$num" -eq 4 ] && [ "$opr" = 'plus' ]; then
    echo 'this is the right'
fi