我想比较Hello World
到hello world
.结果应该是真的,好像它们是平等的.我正在做:
while read line; do
newLine="$newLine$line"
done < $1
newp="Hello World"
if (( ${newp,,}==${newLine,,} )); then
echo "true"
else
echo "false"
fi
Run Code Online (Sandbox Code Playgroud)
当我传递包含以下内容的文本文件时:
#filename: file.txt
hello world
Run Code Online (Sandbox Code Playgroud)
输出似乎是:
./testScript.txt: line 20: 0à»: hello world==hello world : syntax error in expression (error token is "world==hello world ")
+ echo false
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?此外,有点无关,有没有办法将行中的行传递file.txt
给字符串(newLine)而不做while
我已经做过的事情?
您应该添加逗号并将双括号更改为单括号.if语句应该是这样的:
if [ "${newp,,}" = "${newLine,,}" ]; then
Run Code Online (Sandbox Code Playgroud)
而关于那个while循环......这取决于你想做什么.如果在这种情况下,您希望获取整个文件并将其保存为单个字符串,则可以执行以下操作:
line=$(cat $1)
Run Code Online (Sandbox Code Playgroud)
我建议你只使用你编写的循环,如果你试图逐行解析文件,即添加if语句,使用不同的变量等等.但对于像这样的简单案例,cat
会做得很好.