如何在 shell 中将文件中的特定行作为命令运行?

如何在 shell 中将文件中的特定行作为命令运行?

我的问题基于这里的线程:如何在文本文件中将特定行作为命令运行?

我该如何跑步一组线从文本文件?

到目前为止,这是我尝试过的:

Input file:
      1 #!/usr/bin/csh -v
      2
      3 date
      4
      5 echo "abc"
      6
      7 set cell="bananas"
      8
      9   set cmd = "echo apples \
     10               oranges \
     11               graped $cell"
     12
     13 echo $cmd
     14

sed -n '5,13 p' /tmp/1 | sh

给出:

abc
(blank line)

为什么这不执行其余的行?或者正如我怀疑的那样,它是否运行它但没有给出任何输出,因为这些命令是在新的中运行的?每次都 sh(ell) 而不是在单个 shell 会话中?

谢谢!

答案1

您的测试失败,因为您使用的是不同的 shell,sh而不是脚本预期的 shell csh

sed -n 5,13p /tmp/1 | csh

将产生您期望的结果。

相关内容