2013-11-27 13 views
7

私は入力をコマンドラインで入力することで、アプリケーションをlinuxで実行しています。私の入力フィールドには、内部で ";"(セミコロン)を含む引数が含まれています(例:123; 434; 5464)。 これはUTF8Stringエンコードを使用して解析され、送信されます。 しかし、私はこのように使用しているとき、初期自体に私は、Linuxのコマンドラインでセミコロン

bash: 434: command not found 
bash: 5464: command not found 

を取得していますし、私は、トラフィックをキャプチャするときに出力が含まれているだけで123の代わりに123; 434; 5464 しかし、私はセミコロンなしで与える場合(例:123 :434:5464)、問題の出力が正しく出力されない123:434:5464

出力にはセミコロンを使用してコマンドライン入力する方法を教えてください。セミコロンを使っているときに使用する構文はありますか? 私は

-idフィールドが問題とその値が含まれている
./runASR.sh -ip 10.78.242.4 -port 3868 -sce 10.78.241.206 -id 85;167838865;1385433280 

以下のように実行しています。

答えて

18

;は、コマンドの末尾にの終わりとして扱われます。したがって、123;456;5464とbashは実際には3つのコマンドです。このようなメタ文字をエスケープ文字\でエスケープするには、

./command 123\;456\;5464 

それとも単一引用符(double quote evaluates the inner string)とそれを引用(おかげTriplee、私はこれを言及するのを忘れてしまった)

./command '123;456;5464' 
+4

か、それを引用します。 'command '123; 456; 5464'' – tripleee

+1

二重引用符は実際にはうまくいきます(しかし、一重引用符は一般に良いです)。 '$'と二重引用符で囲んだバックティックシンボルについて心配しています。 –

関連する問題