2017-10-10 13 views
0

ファイルを処理するプログラムをbashシェルで作成しようとしています。プログラムをコマンドラインからさまざまな方法で呼び出して、毎回特定の列を出力できるようにしなければなりません。のは、例えば、このコールを挙げてみましょう:[-f:コマンドが見つかりません]

:この部分の

./prog.sh -f file 

私のコードは、私は私が印刷したい列は、しかし、私はまた、次の警告を得ているのですか

if [[($1 == '-f') && ($2 == '<file>')]] ; then 
echo "do stuff and print column" 

です

[-fコマンドが見つかりませんでした]

エラーを削除する方法はありますか?

+4

ご覧ください:http://www.shellcheck.net/ – Cyrus

+0

(GNU Bash 4.3の)そのコードでそのエラーメッセージを再現できません。それがエラーの原因となっているコードの一部ですか? – wjandrea

+0

あなたが与えた特定の行は、エラーは発生しませんが、[mcve]が不足しているにもかかわらず、非常によく理解されている原因でエラーになります。 –

答えて

-2

あなたのコードは次のようになりますので、あなたはテストとしてファイルのチェックを書き換える必要があります。

if [[(-f $1) && ($2 == '<file>')]] ; then 
    echo "do stuff and print column" 
+1

私はそれがOPが意味するものだとは思わない - フラグ-fがフラグの引数としてそこにある –

+0

@EliranMalkaはい、あなたが正しいと思った。 – CheesyMacHack

1

角括弧の周りのスペースがありますことを確認してください。 [[]]は別々のトークンである必要があります。かっこは何も追加せず、削除することができます。 (あなたがそれらを残した場合、彼らはまた、両側のスペースを必要としています。)

何が価値があるために
if [[ $1 == '-f' && $2 == '<file>' ]]; then 
    echo "do stuff and print column" 
fi 

$2チェックはおそらく存在しないはずです。いずれの文字列も有効なファイル名です。

関連する問題