0

我已将一些有价值的信息重定向到一个文本文件中。如何循环执行该文本文件的每一行?

我的想法是将我的文本文件加倍空间,然后使用循环单独执行每一行。我希望当我将文本文件加倍空间时,每个命令字符串都有自己的行。

例如,这个文本文件:

猫 /etc/passwd | 头-101 | 尾 -3 nl /etc/passwd | 头-15 | cut -d':' -f1 cat /etc/passwd | 剪切 -d':' -f1,5 | tee users.txt nl /etc/passwd | 尾-1 | 剪切-f1 ls ~/home | 荷兰 | 尾-1 | 剪切-f1 ls -lR / 2>/dev/null | 排序 -n -r +4 | 头-1

当我把它加倍时应该是这样的:

猫 /etc/passwd | 头-101 | 尾 -3
nl /etc/passwd | 头-15 | cut -d':' -f1
cat /etc/passwd | 剪切 -d':' -f1,5 | tee users.txt
nl /etc/passwd | 尾-1 | 剪切-f1
ls ~/home | 荷兰 | 尾-1 | 剪切-f1 ls -lR / 2>/dev/null | 排序 -n -r +4 | 头-1

然后我会使用一个循环来执行每一行。

这是我的脚本:

FILE="$1"

echo "You Entered $FILE"

if [ -f $FILE ]; then

tmp=$(cat $FILE | sed '/./!d' | sed -n '/regex/,/regex/{/regex/d;p}'| sed -n '/---/,+2!p' | sed -n '/#/!p' | sed 's/^[ ]*//' | sed -e\
s/[^:]*:// | sed -n '/==> /!p' | sed -n '/--> /!p' | sed -n '/"lab3.cmd"/,+1!p'\
 | sed -n '/======/!p' | sed -n '/regex/!p' | sed -n '/commands are fun/\
!p' | sed -n '/regex/!p')

fi

MyVar=$(echo $tmp > hi.txt)
echo "$MyVar"

这是正确的方法吗?

4

2 回答 2

1

为什么不只用行分隔符分隔命令?除非您的命令必须能够包含行分隔符,否则您不需要空行来分隔它们 - 如果它需要连续包含 2 个呢?

于 2008-12-06T00:43:17.763 回答
0

恐怕我不明白您要解决的问题。如果您将命令写入一个名为 commands.txt 的文件中,您可以简单地执行它们

sh commands.txt

执行文件的每一行。如果您想循环执行此操作,我想您可以尝试类似

for i in *; do FILE="$i" sh commands.txt; done

也许您可以编辑您的问题以使其更加具体?

于 2008-12-06T01:46:57.073 回答