2008-12-06 83 views
1

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

我在想什么是把我的文本文件加空格,然后用循环来单独执行每一行。我希望,当我加倍空间的文本文件的每一串命令将有自己的路线。

例如,该文本文件:

猫/ etc/passwd文件|头-101 | tail -3 nl/etc/passwd |头-15 | cut -d':'-f1 cat/etc/passwd | cut -d':'-f1,5 | tee users.txt nl/etc/passwd |尾-1 | cut -f1 ls〜/ home | nl |尾-1 | cut -f1 ls -lR/2>/dev/null | sort -n -r +4 |头-1

应该看起来像这样当我双倍空间它:

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

这是要去了解它的正确方法?

回答

2

为什么不直接用行分隔符来分隔命令?除非你的命令必须能够包含行分隔符,否则你不需要空行来分隔它们 - 然后如果它需要在一行中包含2呢?

0

恐怕我不明白你想解决的问题。如果你写命令到一个文件名为commands.txt中,您可以通过

sh commands.txt 

执行该文件的每一行只是执行它们。如果你想这样做在一个循环,我想你可以尝试像

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

也许你可以编辑你的问题,使其多一点具体的?