0

私は自分のプロジェクトに取り組んでおり、ディレクトリ内のすべてのファイルの名前を変更するシェルスクリプトが必要です。最初の引数はベース名で、2 番目の引数はファイル拡張子です。次のように実行する場合:

./myprog4.sh BASE=Birthday EXT=jpg

結果のファイルには、、、、などBirthday001.jpgの名前が付けられます 。Birthday002.jpgBirthday003.jpg

しかし、入力を のような等式として受け取ることができませんでしたBASE=$1。通常、スクリプト ファイルの実行中に入力を受け取るときは、次のように記述します。

base=$1 
extension=$2 

私は何をすべきか?

4

3 に答える 3

1

まず、コマンドの前に変数の割り当てを付けることで、プログラムの環境に値を設定できることを知っておいてください。

BASE=Birthday EXT=jpg ./myprog4.sh

myprog4.sh開始すると、指定された値で と が表示されBASEますEXT。After myprog4.shexists で、古い値BASEEXT保持します (場合によっては未設定のままにします)。


bashオプションを使用して、試している方法でプログラムを呼び出すことができ-kます。マニュアルページから:

-k コマンド名の前にある引数だけでなく、割り当てステートメントの形式のすべての引数がコマンドの環境に置かれます。

これを使用するには、 を呼び出す前に、 コマンドを使用してsetこのオプションを有効にする必要がありますmyprog4.sh

$ set -k
$ ./myprog4.sh BASE=Birthday EXT=jpg
于 2013-10-14T21:15:08.270 に答える