【问题标题】:How to pass a variable to a command line program?如何将变量传递给命令行程序?
【发布时间】:2014-12-28 13:24:19
【问题描述】:

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

类似这样的:

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

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

【问题讨论】:

  • 如果你想使用touch你需要自己写脚本(除非它已经支持这个)
  • 取决于您如何解释“可能”。如果你想通过触摸来生成名称,那你就倒霉了。如果你只是想用这个名字创建一个文件,那很简单。
  • 是要在脚本中创建文件还是需要它作为命令行命令运行?
  • 我想以我给它的格式创建一个具有当前日期的文件,但还要在创建它之前将一个字符串附加到文件名。我想运行一个班轮(从命令行作为命令运行)。谢谢。

标签: linux bash shell utility


【解决方案1】:

您可以使用命令替换:

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 等的文件。

【讨论】:

  • 完美!太感谢了! :)
【解决方案2】:

为方便起见,您可能需要为此定义一个自定义函数(下面称为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

【讨论】:

  • 谢谢!这也很有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-15
  • 2012-11-07
  • 1970-01-01
  • 1970-01-01
  • 2019-02-16
  • 2017-12-15
  • 2012-06-24
相关资源
最近更新 更多