不区分大小写地比较字符串

Lam*_*aEu 1 unix bash shell

我想比较Hello Worldhello 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我已经做过的事情?

Oca*_*b19 7

您应该添加逗号并将双括号更改为单括号.if语句应该是这样的:

if [ "${newp,,}" = "${newLine,,}" ]; then
Run Code Online (Sandbox Code Playgroud)

而关于那个while循环......这取决于你想做什么.如果在这种情况下,您希望获取整个文件并将其保存为单个字符串,则可以执行以下操作:

line=$(cat $1)
Run Code Online (Sandbox Code Playgroud)

我建议你只使用你编写的循环,如果你试图逐行解析文件,即添加if语句,使用不同的变量等等.但对于像这样的简单案例,cat会做得很好.