在bash中执行包含空格的命令

Epi*_*aph 11 bash shell

我有一个名为cmd的文件,其中包含一个unix命令列表,如下所示:

hostname
pwd
ls  /tmp
cat /etc/hostname
ls -la
ps -ef | grep java
cat cmd
Run Code Online (Sandbox Code Playgroud)

我有另一个脚本执行cmd中的命令:

IFS=$'\n'
clear
for cmds in `cat cmd`
do
        if [  $cmds ] ; then
        $cmds;
        echo "****************************";
        fi
done
Run Code Online (Sandbox Code Playgroud)

问题是没有空格的cmd中的命令运行正常,但脚本没有正确解释带空格的命令.以下是输出:

patrick-laptop
****************************
/home/patrick/bashFiles
****************************
./prog.sh: line 6: ls  /tmp: No such file or directory
****************************
./prog.sh: line 6: cat /etc/hostname: No such file or directory
****************************
./prog.sh: line 6: ls -la: command not found
****************************
./prog.sh: line 6: ps -ef | grep java: command not found
****************************
./prog.sh: line 6: cat cmd: command not found
****************************
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

Bry*_*ley 16

尝试将一行更改为eval $cmds而不仅仅是$cmds