【问题标题】:Using cat in a bash script : escaping troubles在 bash 脚本中使用 cat :逃避麻烦
【发布时间】:2014-01-21 15:14:37
【问题描述】:

我非常不擅长正则表达式和转义字符。 我想在这样的 bash 脚本中使用“cat”命令:

echo `cat working-dir/*OUTPUT` ;

应该在屏幕上打印工作目录中以“OUTPUT”结尾的每个文件,但这不起作用

在那个程序的后面,我想这样做:

cat working-dir/*OUTPUT >> result_file.txt

但也不起作用:( 你能帮帮我吗?

【问题讨论】:

  • 反引号不是引号;您可以使用echo "$(cat working-sir/*OUTPUT)" 来解决此问题,但echo 本身是不必要的。

标签: bash escaping echo cat


【解决方案1】:

你为什么要使用回声或反引号?

cat working-dir/*OUTPUT

同样,

cat working-dir/*OUTPUT >> result_file.txt

...当然应该工作。请提供一个完整的脚本来重现您看到的任何故障,包括设置(创建工作目录,将至少一个以 OUTPUT 结尾的文件放入其中,运行 cat 并观察它失败)。

【讨论】:

  • 我觉得自己好蠢。我搜索的东西太复杂了...谢谢!
  • @JohnKugelman 不,它不起作用(在逐字发出输出的意义上)——它执行字符串拆分和全局扩展。因此,如果OUTPUT 文件包含换行符,它们将被转换为空格;如果它包含*,它将被替换为文件名列表;等等。更正这一点需要更正引用。
  • @JohnKugelman 我不知道您所说的“额外”是什么意思,但未引用的扩展肯定会进行全局扩展。尝试创建一个仅包含 * 字符的文件并自行测试。
猜你喜欢
  • 2015-10-27
  • 2013-03-14
  • 1970-01-01
  • 2011-05-19
  • 2011-06-01
  • 2021-03-08
  • 2017-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多