0

2 つのファイルを作成し、両方のファイルが異なる場合にその内容を逆にするスクリプトを作成しました。このエラーを解決する方法がわかりません:

[: my-filename: シェル プログラミングでの予期しないエラー

コード:

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

使用しているシェルを指定する必要があります。

if [ $x -eq $check ]しかし、私は問題を引き起こすと思います。シェルは、「-」を含むファイル名をスイッチとして解釈します。my-filename の名前を myfilename に変更するか、$x を二重引用符で囲むことができます。

if [ "$x" -eq "$check" ]
于 2013-04-12T03:35:03.017 に答える
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 に答える