我有这个转储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
谢谢=)
答案 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参数的示例,因为您传入的参数与创建的输出无关,只是文件名,在这种情况下为什么不硬编码名称文件?我没有看到具有多个名称的文件的用例具有相同(尽管更新)的数据。