0

我有这个转储数据库的脚本:

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

我这样执行:

dbbkup && ls -atlr

但是我怎样才能将一个参数传递到这个脚本中,该参数将作为数据库转储的前缀?例如

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

然后将脚本更改为:

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

谢谢 =)

4

2 回答 2

0

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

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

像这样称呼它:

dbbkup prefix
于 2012-09-19T09:09:59.003 回答
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 参数的示例,因为您传入的参数与创建的输出无关,只是文件名,在这种情况下,为什么不对文件名进行硬编码?我没有看到具有多个名称且具有相同(尽管已更新)数据的文件的用例。

于 2012-09-19T09:48:31.790 回答