File Bash在脚本中执行行的子集

File Bash在脚本中执行行的子集,file,bash,sh,File,Bash,Sh,我有一个包含类似以下命令的文件: cat /home/ptay89/test/01.out cat /home/ptay89/testing/02.out ... 但我只想让他们中的一些人执行。例如,如果我只想看到输出文件以1.out结尾,我可以这样做: cat commands | grep 1.out | sh 但是,对于命令文件中的每一行,我都会得到以下输出: : cannot be loaded - no such file or directoryst/01.out 当我直接从文

我有一个包含类似以下命令的文件:

cat /home/ptay89/test/01.out
cat /home/ptay89/testing/02.out
...
但我只想让他们中的一些人执行。例如,如果我只想看到输出文件以1.out结尾,我可以这样做:

cat commands | grep 1.out | sh
但是,对于命令文件中的每一行,我都会得到以下输出:

: cannot be loaded - no such file or directoryst/01.out

当我直接从文件中复制并通过所需的命令时,它工作正常。有更好的方法吗?

您的文件(在Windows下创建)中可能有虚假的回车符。使用
tr
而不是
cat
删除它们:

tr -d '\015' <commands | grep 1.out | sh
tr-d'\015'尝试执行

grep -e '^cat.*out' commands | grep 1.out | sh

这应该忽略任何奇怪的字符,只取你需要的字符。

在这里对我有用。我想您的文件中有一些奇怪的字符。几乎是+1,但
tr
不以文件名作为参数。我想你的意思是:
tr-d'\015'
@williampersell谢谢你发现了这一点。编辑以修复它。@tripleee+1,尽管您可能是指“赢”而不是“看”。