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您可以通过或类似的方式将位置参数引用到 shell 脚本。我编写了以下小测试脚本来演示它是如何完成的:

$ 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 回答