13

スクリプトに指定された最初の引数に基づいて、名前が動的に生成されるファイルに (うまくいけば) リダイレクトする bash スクリプトを作成しています。スクリプトの名前は ./buildcsvs です。

動的ファイル名を除いたコードは次のようになります。

#!/bin/bash
mdb-export 2011ROXBURY.mdb TEAM > team.csv

これが私がそれが出てくる方法です

./buildcsvs roxbury

出力する必要があります

roxburyteam.csv

スクリプトの最初の引数として「$1」を使用します。ファイル名は次のようなもので定義されます

"%steam" % $1

あなたはなにか考えはありますか?ありがとうございました

4

2 に答える 2

20

$1 を「team.csv」に連結するだけです。

#!/bin/bash
mdb-export 2011ROXBURY.mdb TEAM > "${1}team.csv"

スクリプトに引数を渡さない場合、「team.csv」に書き込みます。

于 2012-05-13T00:33:39.667 に答える
2

$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
于 2012-05-13T00:36:51.137 に答える