2016-08-23 18 views
0

次のように私はbash.shにコマンドが含まれている場合、私は、 、このコマンドは、しかし、端末端末v.sのコマンド。 bash.sh

で完璧に動作し

cat $txt | grep -v "\/\*" | awk -F$'\t' '{if ($16=="N") print $0}' | awk -F$'\t' '{if ($48=="Y" || $48==".") print $7}' 

、それをさまざまな条件にコマンドとパイプを持っていますまったく動作しません。 私はスクリプトはちょうどこのようになりますtest.sh を作成しました。そして、

#!/bin/bash  
txt=file.txt 
cat $txt | grep -v "\/\*" | awk -F$'\t' '{if ($16=="N") print $0}' | awk -F$'\t' '{if ($48=="Y" || $48==".") print $7}' >> output.txt 

、私はsimplely

sh test.sh 

を使用することがoutput.txtとを生成したが、これは出力には何のいずれかの情報です。 txt

誰でも何が違うのですか? bash test.shとして実行 - - $'\t'のbashされ、他のシェルでは動作しないことがあります -

+3

あなたはそれがスクリプトに入れるとどうなりますか?スクリプトはどのように見えますか?どのようなエラーやメッセージ(もしあれば)がありますか?どのようにスクリプトを実行しようとしますか? –

+0

スクリプトの先頭に 'set -x'を設定してデバッグを試しましたか? – Inian

+1

スクリプトをデバッグする最も簡単な方法は、一度に1つのことをすることです。あなたが今行っていないことから始めることです: '$ txt'の内容をエコーする。 'cat $ txt'だけ続けてください。それから 'cat $ txt | grep ... '。そういうことで、それぞれのことが何をするのかを検証します。あなたが期待していないものを見つけたら、そのことを詳しく見ることができます。 –

答えて

2

ほとんどのshがbashのではないもawk -F'\t'作品ばかりだけでなく

+0

' sh'がBashへのシンボリックリンクであっても、 'sh'として呼び出されるとPOSIXモードで動作します。 – tripleee

+0

実際、shの代わりにbashを試してみると、完璧に動作します。 – user3631848

+0

確かに、shの代わりにbashを試してみると。完璧に動作します。ありがとうございました。今、私は2つがまったく同じではないことを認識しています。 – user3631848

関連する問題