私はJavaクラスを呼び出すために使用するbashスクリプトを持っています。このJavaクラスに2つの引数を渡します。最初の引数($ 1)は、渡す文字列であり、誰かの名前が入っています。 2番目の引数($ 2)は前の月で、2桁の数字です(これもユーザーが渡します)。bashスクリプト内で引数を渡す
だから、Javaのクラスは、このように呼ばれている:
java -DCONFIG_DIR=... com.example.myapp.grades.gradingProcess $1 $2
しかし、今、私は、ユーザーが第二引数に渡したくない、その代わりに、私はスクリプトが月に決定したいと思います。
このようなことをすることはできますか?
month=`date +'%m' -d 'last month'`
java -DCONFIG_DIR=... com.example.myapp.grades.gradingProcess $1 $month
そして、私は私のスクリプトを実行すると、それはこのようなものになるだろう:私はすでにスクリプト内でそれをやっているので、「ジョン ないが、2桁の月を渡し./myscript.sh ?
それは正しい方法ではありませんか? 申し訳ありませんが、これは基本的な質問のようですが、私はまだbashスクリプトに慣れようとしています。
ありがとうございますか?
はい、動作するはずです。 1つの提案:人の名前にスペースがある場合は、 '$ 1'を二重引用符で囲み、単一のトークンとして渡すようにします。 (ユーザーは二重引用符も使用する必要があります) –
@JuanTomas - スペースが必要な場合*だけでなく、あなたがそれを必要としないときでも適切な引用をすると、あなたの期待が間違っていたときにバグを避けることができます。 (私は '[0-9a-f] {24}'にマッチするファイル名のみを含むと予想される変数拡張を引用しないようにした後に、大量のデータ損失イベントを実際に見た - バッファオーバーフローは、空白で囲まれたアスタリスクを名前に置き、作成が苦手なスクリプトがそのファイルを削除しようとしましたが、惨事が続きました)。 –
@JuanTomasなので、$ monthを引用符で囲む必要はありません。 また、私は1つの単語の名前(スペースなし)だけを渡すという事実を知っていますが、頭のためにありがとう!ちゃんと覚えておきますよ。 – user3266259