Executing commands containing space in bash

Posted by Epitaph on Stack Overflow See other posts from Stack Overflow or by Epitaph
Published on 2009-05-07T18:41:39Z Indexed on 2010/04/15 15:23 UTC
Read the original article Hit count: 452

Filed under:
|

I have a file named cmd that contains a list of unix commands as follows:

hostname
pwd
ls  /tmp
cat /etc/hostname
ls -la
ps -ef | grep java
cat cmd

I have another script that executes the commands in cmd as:

IFS=$'\n'
clear
for cmds in `cat cmd`
do
        if [  $cmds ] ; then
    	$cmds;
    	echo "****************************";
        fi
done

The problem is that commands in cmd without spaces run fine, but those with spaces are not correctly interpreted by the script. Following is the output:

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
****************************

What am I missing here?

© Stack Overflow or respective owner

Related posts about bash

Related posts about shell-scripting