在bash中读取和执行带文件空格的行

时间:2014-03-19 12:28:26

标签: linux bash shell

当我尝试从文件中读取某些行并逐个执行时,我在bash shell脚本中遇到问题。当行具有带空格的参数时,会发生此问题。代码:

while read i
do
   $i
done < /usr/bin/tasks

任务文件:

mkdir Hello\ World
mkdir "Test Directory"

上述两条指令在直接从终端执行时都能正常工作,分别只创建两个名为“Hello World”和“Test Directory”的目录,但从脚本中读取和执行指令时也不会发生同样的情况。 ,意思是创建了四个目录。

话虽如此,我想让我的代码尽可能简单,如果可能的话,我宁愿不使用cat命令。提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

尽可能简单?您正在重新实施.(或source,因为bash允许您拼写)命令:

. /usr/bin/tasks

source /usr/bin/tasks

要一次执行一行,请使用eval

while IFS= read -r i; do
    eval "$i"
done

这假设文件的每一行都包含一个或多个可以单独执行的完整命令。