[:<filename>:shell编程中的意外错误</filename>

时间:2013-04-11 17:47:06

标签: linux shell unix

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

  

[:my-filename: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"

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

你必须提供你正在使用的shell。

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

if [ "$x" -eq "$check" ]

答案 2 :(得分:0)

在bash中,逻辑运算符-eq -ne -gt -lt -ge -le特定于数字参数。要比较字符串,您只需使用

即可
if [ $x = $check ]; then
 # do whatever
fi