私は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