将字符串传递给bash脚本

时间:2012-09-19 09:04:48

标签: sql bash

我有这个转储db的脚本:

cat /usr/bin/dbbkup
#!/bin/bash
mysqldump -uroot -proot db > db_$(date +%d%H%M%S).sql

我这样执行:

dbbkup && ls -atlr

但是如何将参数传递给这个将为db转储添加前缀的脚本? E.G。

dbbkup -arg "changed name of field" && ls -atlr

然后将脚本更改为:

#!/bin/bash
mysqldump -uroot -proot db > db_$(arg)_$(date +%d%H%M%S).sql

谢谢=)

2 个答案:

答案 0 :(得分:0)

传递给bash脚本的第一个参数是$ 1.

#!/bin/bash
mysqldump -uroot -proot db > $1db_$(date +%d%H%M%S).sql

这样称呼:

dbbkup prefix

答案 1 :(得分:0)

Bash脚本按顺序引用参数,例如:

dbbkup "changed name of field"

成为脚本中的变量$1

因此,为了继续您的示例,使用基于日期和特定前缀的自定义文件名创建数据库转储,您的命令将是:

./dbbkup.sh prefix

并且脚本的内容为:

#!/bin/bash
mysqldump -uroot -proot db > db_$1_$(date +%Y%m%d%H%M%S).sql

这将生成一个名为db_prefix_20120919104317.sql的文件。我更改了日期格式,因为您有更多信息,在目录列表中,您现在可以按名称排序,并按时间排序。

另外,我假设您希望将此作为如何使用bash参数的示例,因为您传入的参数与创建的输出无关,只是文件名,在这种情况下为什么不硬编码名称文件?我没有看到具有多个名称的文件的用例具有相同(尽管更新)的数据。