如何将变量传递给命令行程序?

时间:2014-12-28 13:24:20

标签: linux bash shell utility

我想用当前日期作为前缀创建文件,并使用一些字符串作为文件名的剩余部分。

这样的事情:

touch `date +"%Y-%m-%d-"$1`.md hello

$1应该选择hello并创建一个名为2014-3-3-Hello.md的文件。

2 个答案:

答案 0 :(得分:5)

您可以使用命令替换:

touch "$(date +"%Y-%m-%d-")hello.md"

如果你想命名一些以.md结尾的文件,只需将事物包裹在for循环中:

for baseName in hello world foo bar ; do
    touch "$(date +"%Y-%m-%d-")$baseName.md"
done

这将创建四个名称为2014-3-3-hello.md2014-3-3-world.md

的文件

答案 1 :(得分:4)

为方便起见,您可能希望为此定义一个自定义函数(下面称为touchdatemd):

$ touchdatemd () { touch $(date +"%Y-%m-%d-")"$1".md; }

测试:

$ mkdir test && cd test
$ touchdatemd hello
$ touchdatemd "I love pie"
$ touchdatemd bye
$ ls
2014-12-28-bye.md   2014-12-28-I love pie.md    2014-12-28-hello.md