当我尝试从文件中读取某些行并逐个执行时,我在bash shell脚本中遇到问题。当行具有带空格的参数时,会发生此问题。代码:
while read i
do
$i
done < /usr/bin/tasks
任务文件:
mkdir Hello\ World
mkdir "Test Directory"
上述两条指令在直接从终端执行时都能正常工作,分别只创建两个名为“Hello World”和“Test Directory”的目录,但从脚本中读取和执行指令时也不会发生同样的情况。 ,意思是创建了四个目录。
话虽如此,我想让我的代码尽可能简单,如果可能的话,我宁愿不使用cat命令。提前感谢您的帮助。
答案 0 :(得分:3)
尽可能简单?您正在重新实施.
(或source
,因为bash
允许您拼写)命令:
. /usr/bin/tasks
或
source /usr/bin/tasks
要一次执行一行,请使用eval
。
while IFS= read -r i; do
eval "$i"
done
这假设文件的每一行都包含一个或多个可以单独执行的完整命令。