我创建了一个脚本,如果两个文件不同,它会创建两个文件并反转它们的内容。我无法理解如何解决此错误:
[: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"
答案 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