Parsing 使用循环执行文本文件

Parsing 使用循环执行文本文件,parsing,text,shell,Parsing,Text,Shell,我已将一些有价值的信息重定向到文本文件中。如何在循环中执行该文本文件的每一行 我想的是将我的文本文件的空格加倍,然后使用循环以独立方式执行每一行。我希望当我将文本文件的空格加倍时,每个命令串都会有自己的行 例如,此文本文件: cat/etc/passwd | head-101 | tail-3 nl/etc/passwd | head-15 | cut-d':'-f1 cat/etc/passwd | cut-d':'-f1,5 | tee users.txt nl/etc/passwd | t

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

我想的是将我的文本文件的空格加倍,然后使用循环以独立方式执行每一行。我希望当我将文本文件的空格加倍时,每个命令串都会有自己的行

例如,此文本文件:

cat/etc/passwd | head-101 | tail-3 nl/etc/passwd | head-15 | cut-d':'-f1 cat/etc/passwd | cut-d':'-f1,5 | tee users.txt nl/etc/passwd | tail-1 | cut f1 ls~/home | nl tail-1 | cut f1 ls-ls-lR/2>/dev/null | sort-n-r+4 | head 1 当我将其两倍隔开时,应如下所示:

cat/etc/passwd |头-101 |尾-3
nl/etc/passwd | head-15 | cut-d':'-f1
cat/etc/passwd | cut-d':'-f1,5 | tee users.txt
nl/etc/passwd|tail-1|cut-f1
ls~/home | nl | tail-1 | cut-f1 ls-lR/2>/dev/null | sort-n-r+4 | head-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"

这是正确的方法吗?

为什么不使用行分隔符来分隔命令?除非您的命令必须能够包含行分隔符,否则您不需要使用空行来分隔它们-如果它需要在一行中包含2,该怎么办?

恐怕我不理解您试图解决的问题。如果将命令写入名为commands.txt的文件中,只需通过

sh commands.txt
它执行文件的每一行。如果你想在一个循环中做这件事,我想你可以试试类似的方法

for i in *; do FILE="$i" sh commands.txt; done
也许你可以修改你的问题使它更具体一点