スクリプトに与えられた最初の引数に基づいて、名前が動的に生成され、文字列の前に付けられたファイルに(うまくいけば)リダイレクトするbashスクリプトを書いています。スクリプトの名前は./buildcsvsです。
動的ファイル名を使用しない場合のコードは次のようになります。
#!/bin/bash
mdb-export 2011ROXBURY.mdb TEAM > team.csv
これが私がそれを出したい方法です
./buildcsvs roxbury
出力する必要があります
roxburyteam.csv
スクリプトの最初の引数として「$ 1」を使用します。ファイル名は次のようなもので定義されます。
"%Steam" % $1
あなたはなにか考えはありますか?ありがとうございました
$ 1を「team.csv」と連結するだけです。
#!/bin/bash
mdb-export 2011ROXBURY.mdb TEAM > "${1}team.csv"
スクリプトに引数を渡さない場合は、「team.csv」に書き込みます。
$1
または同様のものを介して、シェルスクリプトの位置引数を参照できます。それがどのように行われるかを示すために、次の小さなテストスクリプトを作成しました。
$ cat buildcsv
#!/bin/bash
echo foo > $1.csv
$ ./buildcsv roxbury
$ ./buildcsv sarnold
$ ls -l roxbury.csv sarnold.csv
-rw-rw-r-- 1 sarnold sarnold 4 May 12 17:32 roxbury.csv
-rw-rw-r-- 1 sarnold sarnold 4 May 12 17:32 sarnold.csv
team.csv
を$1.csv
に置き換えてみてください。
引数なしでスクリプトを実行すると、.csv
という名前の空ファイルが作成されることに注意してください。それを処理したい場合は、$#
を使用して引数の数を数える必要があります。私も一緒にハッキングしました:
$ cat buildcsv
#!/bin/bash
(( $# != 1 )) && echo Need an argument && exit 1
echo foo > $1.csv