我正在编写一个bash脚本,它将(希望)重定向到一个文件,该文件的名称是动态生成的,基于给脚本的第一个参数,前面加上一些字符串。脚本的名称是./buildcsvs。
以下是代码现在的样子,没有动态文件名
#!/bin/bash
mdb-export 2011ROXBURY.mdb TEAM > team.csv
以下是我希望它出来的方式
./buildcsvs roxbury
应输出
roxburyteam.csv
以“$ 1”作为脚本的第一个arg,其中文件名由类似
之类的东西定义"%steam" % $1
你有什么想法吗?谢谢
答案 0 :(得分:17)
只需将$ 1与“team.csv”连接即可。
#!/bin/bash
mdb-export 2011ROXBURY.mdb TEAM > "${1}team.csv"
如果他们没有将参数传递给脚本,它将写入“team.csv”
答案 1 :(得分: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