Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/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
比较shell脚本中的字符串未按预期工作_Shell - Fatal编程技术网

比较shell脚本中的字符串未按预期工作

比较shell脚本中的字符串未按预期工作,shell,Shell,if语句显示为false,它正在打印else echo。我看了很多网站,他们说这是应该采用的格式。我是否犯了一些语法错误 解决方案 (在条件中,$var和1之间没有空格。)问题是这一行: if [ "$var1" = "$var2" ]; then 编辑::要确保在两个单独的变量中读取两个值,请使用IFS如下所示: if [ "$var1" = "$var2" ]; then 必须逐1读取变量,而不是在同一行。以hi hi okayNo的形式输入单词,请始终使用引号引用变量,因此使用:如

if语句显示为false,它正在打印else echo。我看了很多网站,他们说这是应该采用的格式。我是否犯了一些语法错误

解决方案 (在条件中,
$var
1
之间没有空格。)

问题是这一行:

 if [ "$var1" = "$var2" ]; then

编辑::要确保在两个单独的变量中读取两个值,请使用
IFS
如下所示:

if [ "$var1" = "$var2" ]; then

必须逐1读取变量,而不是在同一行。

以hi hi okayNo的形式输入单词,请始终使用引号引用变量,因此使用:
如果[“$var1”=“$var2”];然后
查看我下面关于如何使用
读取的回答。有关调试脚本的一些信息,请参阅-输出将向您显示一些问题(
“1”
显然与您键入的某个词不同)。这取决于您在
读取
之后输入的值。如果输入
abc abc
,则
If
块将打印
这些字符串是相同的
Add
echo
for strings+在
read
行之后输入它们的长度,并确保字符串是相同的。将变量打印为
echo”| var1 | | var2 |“
也请参见我的编辑部分。这是一个选项。另一种是简单地输入用空格隔开的单词。我不认为这有什么区别,但不管怎样,它仍然在说不同的话
if [ "$var 1" = "$var2" ]; then
          ^---< extra space here <---
if [ "$var1" = "$var2" ]; then
IFS=' ' && read var1 var2
echo "please enter 2 word"
read var1 
read var2
if [ "$var1" = "$var2" ]; then
    echo "These string are the same"
else
    echo "the strings are different"
fi;