2017-03-10 8 views
0

これは簡単な回答になるはずですが、私は単純な解決策を見つけることができませんでした。私はreindent.pyツールのscripを実行するbashスクリプトを作成しようとしていますが、ファイルをディスクに書き戻すかどうかをユーザーが入力できるようにしたいと考えています。基本的にはreindent_python -n FILE_PATHまたはreindent_python FILE_PATHと入力します。これまでのところ、私は次のように得た:Bash関数のパラメータを取得し比較するには?

function reindent_python() { 
    if ["$1" = "n"]; then 
     ./reindent.py -n $2 
    else 
     ./reindent.py $2 
    fi 
} 

これが私の最初のシェルスクリプトですので、私は最初のパラメータは-nで、$1 nパラメータと$2 FILE_PATHであるかどうかを取得するかどうかはわかりませんか?このスクリプトを作成するにはどうすればいいですか?

ありがとうございました!

+1

位置パラメータ –

+0

を拡張 './reindent.pyの "$ @"'、と全く同じ@DiegoTorresMilano申し訳ありませんが、私はあなたの答えを理解していない、あなたはそれを説明してもらえますか? –

+1

http://shellcheck.net/これをキャッチします。 –

答えて

2

まず、表示するものはスクリプトではなく関数です。あなたのPythonスクリプトは、あなたの関数と同じ引数を取るように見えるという事実与え

function reindent_python() { 
    ./reindent.py "[email protected]" 
} 

:あなたの関数は、のような単純なものでした。上記の構造を持つPythonスクリプトにそれらをすべて渡すことができます。

@CharlesDuffyコメントで述べているように、functionキーワードは必要ありません。

reindent_python() { 
    ./reindent.py "[email protected]" 
} 

さておき、if部分は、ブラケットの周りの空間とダッシュと

[ "$1" = "-n" ]; 

する必要があることnの前に

+1

'function'キーワードを削除することをお勧めします。これは、関数がPOSIX shと互換性がなくなりますが、それがなくても完全に移植可能(正確に同じように動作する)になります。 –

+0

ありがとうございました! –

1

あなたは非常に近いです。ちょうど-を追加してください。文字列の比較は単純化され、他の処理は行われません。ハイフンは削除されません。

function reindent_python() { 
    if [ "$1" = "-n" ]; then 
     ./reindent.py -n "$2" 
    else 
     ./reindent.py "$2" 
    fi 
} 

または関数を呼び出すときにそれを削除します。

reindent_python n FILE_PATH

+0

ありがとうございます@CharlesDuffy –

関連する問題