【问题标题】:Linux command line printf tool that allows the same parameter to be used at many placesLinux 命令行 printf 工具,允许在许多地方使用相同的参数
【发布时间】:2014-06-20 05:50:35
【问题描述】:

正如我们从这个 Q&A What does {0} mean when found in a string in C#? 中看到的,C# 使用不同于 C/C++ 的用于 String.Format 的 printf 或 Console.WriteLine 的方法,它允许在许多地方使用相同的参数。例如,

String.Format("Fib: {0}, {0}, {1}, {2}, {0}", 1,  1+1, 1+2)

是否有任何 Linux 命令行 printf 工具具有允许在许多地方使用相同参数的相同好处?

【问题讨论】:

  • 您可以在任何 shell 脚本中执行此操作;脚本的参数命名为 $1、$2 等,每个参数都可以被多次引用。
  • 不,没有这种常用的工具,但创建(一个非常简单的)工具应该不难:只需将数字替换为正确的参数(甚至可以作为简单的shell来完成-脚本)。允许更复杂的格式(精度等)会有点困难,但仍然很有可能。
  • 除了@ErnestFriedman-Hill 所说的,您甚至可以在shell 函数中执行此操作(不一定需要脚本)。
  • 没有标准方式,所以只需使用一个函数或多个参数。您不希望有人在 StackOverflow 上提问 what is this code doing? 保持可读性。

标签: linux command-line output string-formatting utility


【解决方案1】:

这是一个单行,使用 python(使用其他语言很容易编写一个)。

% alias myprintf='python -c "import sys; print sys.argv[1].format(*sys.argv[2:])"'
% myprintf "a {0} is a {0} is a {1}" dog cat
a dog is a dog is a cat

alias 命令中,我假设您使用的是bash

【讨论】:

  • 超酷!我意识到我可以在提出问题后使用 shell 功能,如果不存在,我准备使用它。
猜你喜欢
  • 2019-12-31
  • 2016-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多