【问题标题】:How to read a file content in ash into an argument?如何将 ash 中的文件内容读入参数?
【发布时间】:2013-01-09 09:26:35
【问题描述】:

我正在尝试读取在 ash shell 中包含单个数字的文件。这样做的 bash 方式

ARG=`cat /tmp/tempfile`

不起作用,我知道 ARG 在这行代码之后没有任何内容。

【问题讨论】:

  • 这应该可以正常工作。你确定文件不为空吗?
  • 我确定,当我打印值时: echo "stored value= $ARG" 在 "=" 之后什么都没有。此外,当我使用 bash 在计算机上运行此代码时,它也可以正常工作。
  • 您能否给我们周围的代码行,以便我们检查它是否来自其他原因(例如:在子shell中读取?)。并确保“var=value”中的 = 周围没有空格。尝试查明 pb:写cat /tmp/tempfile ; read THEARG</tmp/tempfile ; echo "THEARG=$THEARG":这个想法是为了确保文件是可读的,并且只有 1 行,并将 ARG 更改为 THEARG 以确保它不是 ash 中的保留字。

标签: shell unix ash


【解决方案1】:

尝试用引号将其括起来,使其不会在第一个换行符处停止:

ARG="`cat /tmp/tempfile`"

ARG="$(cat /tmp/tempfile)"

read ARG  </tmp/tempfile #only 1st line will be read

【讨论】:

  • 带有 UUOC 的示例可能不起作用,因为(在大多数 shell 中)读取将在子 shell 中运行。但是重定向到 read 将在任何 posix 兼容的 shell 中工作。
  • @William 哎呀,非常非常正确,当我通常在其他脚本中发现它时,我不敢相信我爱上了那个 ^^ 我编辑了我的答案。谢谢!
猜你喜欢
  • 2010-09-13
  • 1970-01-01
  • 2019-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-04
  • 1970-01-01
  • 2011-04-18
相关资源
最近更新 更多