0

我创建了一个脚本,它创建两个文件并在两个文件不同时反转它们的内容。我无法理解如何解决此错误:

[:我的文件名:shell编程中的意外错误

代码:

echo "Enter first filename :"
read file1
echo "Enter second filename:"
read file2
echo "Enter content of file 1 : "
gedit $file1
echo "Enter content of file 2 : "
gedit $file2

check=" " 

x=` cmp $file1 $file2 `
if [ $x -eq $check ]
then
echo "Both files are same"
rm $file2
echo "Redundant file removed!!!"
else
echo "They are different"
fi

tac $file1 | cat > temp1
rev temp1 | cat > temp11 
tac $file2 | cat > temp2
rev temp2 | cat > temp22
mv temp11 $file1
mv temp22 $file2

echo "Content of both the files reversed"
4

3 回答 3

0

在 bash 中,逻辑运算符 -eq -ne -gt -lt -ge -le 特定于数字参数。对于比较字符串,您可以简单地使用

if [ $x = $check ]; then
 # do whatever
fi
于 2013-04-12T07:56:17.393 回答
0

您可以cmp直接从if语句中使用

if cmp -s $file1 $file2
then
  echo "Both files are same"
  rm $file2
  echo "Redundant file removed!!!"
else
  echo "They are different"
fi
于 2013-04-11T19:27:24.737 回答
0

您必须提供您正在使用的外壳。

但我认为if [ $x -eq $check ]导致问题。您的 shell 将包含“-”的文件名解释为开关。您可以将 my-filename 重命名为 myfilename 或双引号 $x:

if [ "$x" -eq "$check" ]
于 2013-04-12T03:35:03.017 回答