我试图执行命令从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之后,我也需要为我执行。 任何人都可以为此提供更好的解决方案吗?
答案 0 :(得分:1)
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