2017-05-11 17 views
-1

2つのコマンドライン引数を使用するスクリプトがあります。Bashスクリプトがコマンドライン引数を正しく処理しない

echo "cat meta.results.out | parseTable.pl --col VARIANTID,P_SQRTN,P_FIXED,P_RANDOM | awk ' $2 == 0 || $3 == 0 || $4 == 0 { print $1, $2, $3, $4 } ' > meta.results.needs_p_fixing.out" > meta.p_corrector.sh

そして、それは、それが生成する、私が欲しいものを生産されていません:

cat meta.results.out | parseTable.pl --col VARIANTID,P_SQRTN,P_FIXED,P_RANDOM | awk ' metagwastoolkit.files.model1.list == 0 || == 0 || == 0 { print metagwastoolkit.model1.conf,metagwastoolkit.files.model1.list,, }' > meta.results.needs_p_fixing.out

だから、私はこれを行うスクリプトの後半で

./metagwastoolkit.run.sh metagwastoolkit.model1.conf metagwastoolkit.files.model1.list

私の設定ファイルを$ 1、my files.listを$ 2 ...としています。これは明らかにwではありません帽子私が欲しい...フィールド2,3、または4が0に等しい場合、パイプから列1から4を印刷することが期待されます。

これを変更するにはどうすればよいですか?

ベスト、

サンダー

+0

?変数の上書き/置換の問題であれば、 'source $ {1}'は現在のスクリプトの変数名をその時点のソースファイルの値で上書きすることができると思われますが、引数の競合の方法に従っていません'$ 1'と' $ 2'はあなたが望むものを含んでいませんか? –

+1

私が読んだとき、あなたの 'awk '** $ 2 == 0 || $ 3 == 0 || $ 4 == 0 {プリント$ 1、$ 2、$ 3、$ 4 **} 'はあなたが思っていることをしているようには見えません。 'awk'構文を再度確認してください。 –

+0

私はその質問を理解していません。スクリプトのどこでも 'CONFIGURATIONFILE'や' GWASFILE'を使うことはありません。 – Barmar

答えて

0

だから、答えは私の意図されていない、echo内の変数は、コマンドライン引数によって置き換えられていることでした。解決策は、$-signをエスケープすることです。

現用回線は、次のとおりです。

私が何をしたいん

echo "cat meta.results.out | parseTable.pl --col VARIANTID,P_SQRTN,P_FIXED,P_RANDOM | awk '\$2 == 0 || \$3 == 0 || \$4 == 0 { print \$1, \$2, \$3, \$4 }' > meta.results.needs_p_fixing.out" > meta.p_corrector.sh

:列2、3、およびパイプの4のフィールドは0に等しいかどうかをチェックし、これらを印刷してください。

私を解決に導くための@Barmarへの誇り。

ベスト、それは右にやっていない、正確に何

サンダー

関連する問題