shell读取文档中的命令并执行
今天想到一个方法,将要执行的所有的命令写到一个文档中,使用一个脚本顺序读取并执行,脚本大体内容如下:
#!/bin/bash
run_Dir=$(cd $(dirname $0);pwd)
for i in `cat ${run_Dir}/run_order.txt`
do
$i
done
文档中的命令如下:
/bin/cat /etc/crontab
/bin/cat /etc/rc.local
结果报出错误:
/bin/cat: No such file or directory
发现for取每行数据是以tab或空格键来截取的,并不是读取真正的每一行,在循环开始和结束添加
SAVEIFS=$IFS
IFS=$'\n'
。。。
IFS=$SAVEIFS
再次运行结果发现还是报错
/bin/cat /etc/crontab: No such file or directory
查找原因,认为程序应该是将内容当成文本处理了,并没有作为命令来执行,修改$i =》 $($i),发现还是报错:/bin/cat /etc/crontab: No such file or directory,
$()未起作用或者还是当成字符串处理,修改 $i => eval $i 程序正确运行
故吾自今始勉,朝闻道,夕可死。