端末でコードを実行できますが、同じコマンドをシェルスクリプトで実行するとエラーが発生します。

端末でコードを実行できますが、同じコマンドをシェルスクリプトで実行するとエラーが発生します。

私はUnixとシェルスクリプトに初めてアクセスし、端末でコードを実行できますが、シェルスクリプトで実行すると同じコマンドを実行するとエラーが発生します。

#!/bin/bash
diff <((sort doc1) <(sort doc2)) | grep -x '.\{6\}' >sample.txt

シェルを実行すると、次のエラーが発生します。

/App$ sh filediff.sh 
filediff.sh: 4: filediff.sh: Syntax error: "(" unexpected

答え1

通常のシェルでdiffコマンドを実行すると、現在のシェル(主にbash)を使用します。

スクリプトにbashシェルを使用しようとしていますが、 "shfilediff.sh"を使用してスクリプトを呼び出すと、bashとは少し異なるsh-Shellが呼び出されます。

以下を使用してスクリプトを呼び出すことができます。

bash filediff.sh

または実行可能にする

chmod +x filediff.sh

そして電話してください

./filediff.sh

答え2

diffコマンドは、2つのファイルを分析し、異なる行を印刷するために使用されます。 diffコマンドに正しい入力ファイルが提供されていません。

簡単に変更されたジョブスクリプトは次のとおりです。

sort doc1 | tee tempdoc1
sort doc2 | tee tempdoc2
diff tempdoc1 tempdoc2 | grep -x '.\{6\}'  > sample.txt
echo "Following is difference:"
cat sample.txt

関連情報