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  程序正確運行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM