2016-04-03 19 views
0

のLinux、CentOSの近くの問題構文エラーを並べ替える - 私は、コマンドbashスクリプトと予期しないトークン

comm --check-order -1 --output-delimiter=----- <sort(file1.txt) <sort (file3.txt) > result.txt ; 

を使用して、私はbashのファイルを作成しようとすると、それはシェル上で動作しますが、2つのファイルを比較するために - 私が持っています

syntax error near unexpected token `(' 

スクリプトが最も簡単である

#!/bin/bash 
cd /var/www/html/compare/ ; 
comm --check-order -1 --output-delimiter=----- <sort(file1.txt) <sort (file3.txt) > result.txt ; 
exit ; 
    sh 

I既に丸括弧Lのエスケープと変形を試みましたIKE

sort\(file1.txt\) 

または

sort'(file1.txt)' 

が、この場合シェルは、私が

<sort\(var/www/html/compare/file1.txt\) 

同じ結果 "そのようなファイル"

のような絶対パスで試してみました

sort(file1.txt)...: No such file or directory 

を語ります

と私はすでに

sh /a/compare.sh 
bash /a/compare.sh 
chmod +x /a/compare.sh; ./a/compare.sh 

それでも同じ問題のようなバリエーションでスクリプトを実行してみました。

だから私は括弧をエスケープしてOR "No such file ..."を持っています。あるいは、他のケースでは "予期しないトークン"です。

事前にお試しいただきありがとうございますが、構文の正しい "ミックス"である必要がありますか?

+0

[shellcheck to the rescue!](http://www.shellcheck.net/) – jDo

答えて

1

私は多くの組み合わせの後に、少し具体的なエスケープでBASHを強制する必要があるソリューションを見つけました。 このスクリプトは、うまくいけば、時間を節約するために誰かを助ける

#!/bin/bash 
cd /var/www/html/compare/ ; 
`bash -c "comm --check-order -1 --output-delimiter=----- <(sort file1.txt) <(sort file2.txt) > result.txt" ` ; 
exit ; 
    sh 

動作します。

1

プロセス置換は、コマンド全体を括弧で囲みます。

... <(sort ...) ... 
+0

私はあなたが意味するものをキャッチしませんでした。私はあなたが '... Serge

+0

その文法は私が言ったようなものではありません。 –

関連する問題