2016-04-27 6 views
0

申し訳ありませんが、これは私がシェルスクリプトに慣れていないと言われています。unixのdateコマンドのようなbashでargsを渡す

私はスクリプトを書こうとしています。私はunixのdateコマンドのようにargsを取りたいと思います。

例:

$ date '+%I:%M %p' 
08:45 PM 

それでは、どのように私は私のスクリプトでこのような何かをしますか?


編集:私のスクリプトでやろうとしているのは、dateコマンドと同じ方法で引数を渡すことです。

私のスクリプトがfooにすべて%に引数を変更したのであれば、それは次の操作を行います:

$ ./myscript '%a bar' 
foo bar 
+1

これはbashでやりたいことではありません。 –

+1

エミュレートしたい日付の関数か、基本的なコマンドラインパラメータ渡しだけですか?後者については、[GNU Bashリファレンスマニュアル](https://www.gnu.org/software/bash/manual/)をチェックし、 '$ *'、 '$ @'などをチェックしてください。 –

+0

これは実際には非常に複雑です。実際の引数はスクリプト自体に引数を渡すよりもはるかに困難です。このような文字列を解析しますか? '+%I:%M%p'? – Harry

答えて

1

を私はあなたが複数のキーワードを代用することを可能にする解決策を考え出すことができました@tripleeeのおかげで文字列argで指定します。ここで

はコードです:

res="${1}" 
res="${res//"%a"/water}" 
res="${res//"%b"/chocolate}" 
echo "$res" 

入力:

./myscript "like %a for %b" 

出力:

like water for chocolate 

この方法は、あなたがそれがにISN場合でも、引数に置き換えたいすべてのキーワードを通過しますそこにはそれほど効率的ではないが、それは仕事を終わらせる。

+0

グローバル置換のために、最初のスラッシュを倍にします。 1つのスラッシュでは、最初のオカレンスだけが置換されます。 – tripleee

+0

私はこれが外部コマンドよりも速くなることを期待しています。 – tripleee

関連する問題