Windows 上 ubuntu 服务器和 ubuntu 客户端的不同行为

Windows 上 ubuntu 服务器和 ubuntu 客户端的不同行为
#!/bin/bash

# Reading

cat /home/radiare/Desktop/first.txt | while read LINE

do
if [ "$LINE" == "false" ]; then
echo "Inside first loop"
break
fi
done

cat /home/radiare/Desktop/second.txt | while read LINE

do
if [ "$LINE" == "false" ]; then
echo "Inside second loop"
break
fi
done

在 ubuntu 客户端中,如果语句正常工作,我可以执行此脚本并在其中回显。我在 ubuntu 服务器中做了同样的事情,它没有进入 if 语句。唯一的区别是我在服务器上使用 sudo 运行。

有什么建议么?

答案1

尝试-x在 shebang 行后面添加,使其看起来像这样:#!/bin/bash -x。输出将如下所示:

+ read LINE
+ cat /home/radiare/Desktop/first.txt
+ '[' true == false ']'
+ read LINE
+ '[' true == false ']'
+ read LINE
+ '[' false == false ']'
+ echo 'Inside first loop'
Inside first loop
+ break
+ read LINE
+ cat /home/radiare/Desktop/second.txt
+ '[' true == false ']'
+ read LINE
+ '[' true == false ']'
+ read LINE
+ '[' false == false ']'
+ echo 'Inside second loop'
Inside second loop
+ break

请注意,我为这次测试创建了一个包含以下内容的文件:

true
true
false
true

second.txt是指向 的符号链接first.txt

我也运行了它sudo并得到了相同的结果。

或者,您可以添加一个else子句来查看当输入没有落入语句时它是什么样子if

if [ "$LINE" == "false" ]
then
  echo "Inside first loop"
  break
else
  echo "LINE is $LINE"
fi

相关内容