如何使用shell执行从txt文件读取的命令?

时间:2018-03-17 10:32:42

标签: linux bash shell unix

我试图执行命令从txt文件中读取它。但是在脚本终止之后,只有第一个命令正在执行。我的脚本文件名是shellEx.sh,如下:

echo "pwd" > temp.txt
echo "ls" >> temp.txt
exec < temp.txt
while read line
do
exec $line
done
echo "printed"

如果我在exec的位置保持回声,只需打印pwd和ls。但我想逐个执行pwd和ls。

o / p am is is:

$ bash shellEx.sh
/c/Users/Aditya Gudipati/Desktop

但是在pwd之后,我也需要为我执行。 任何人都可以为此提供更好的解决方案吗?

3 个答案:

答案 0 :(得分:1)

bash中的

exec表示Unix sense,表示&#34;停止运行此程序并开始运行另一个程序&#34;。这就是您的脚本退出的原因。

如果要将line作为shell命令执行,可以使用:

line="find . | wc -l"
eval "$line"

$line本身不允许使用管道,引号,扩展或其他shell语法)

要执行包含多行命令的整个文件,请使用以下方法之一:

source ./myfile # keep variables, allow exiting script
bash myfile     # discard variables, limit exit to myfile

答案 1 :(得分:-1)

我建议:

#!/bin/bash

echo "pwd" > temp.txt
echo "ls" >> temp.txt

while read -r line; do
   echo "Next command: $line"
   $line
done < temp.txt

答案 2 :(得分:-1)

每行一个有效命令的文件本身就是一个shell脚本。只需使用.命令在当前shell中执行它。

$ echo "pwd" > temp.txt
$ echo "ls" >> temp.txt
$ . temp.txt