2013-03-09 73 views
0

當我從crontab執行時,我的bash腳本的下方不會輸出/tmp/DPE_SC/LoadUnits/ttx/bin/deasn9 -b -a cdrr6 $fnames到文件$dst_dir"/"$fstat"-"$fnames".txt。 它只創建一個名爲$dst_dir"/"$fstat"-"$fnames".txt的空文件 確定它可以從命令行手動正常工作。BASH腳本在crontab中不能正常工作

的/ tmp/DPE_SC/LoadUnits/TTX /斌/ deasn9 -b -a cdrr6 $ fnames> $ dst_dir/$ fstat- $ fnames.txt

什麼是我的錯?

這是我整個腳本

#/斌/慶典

出口PATH =/tmp目錄/ DPE_SC/LoadUnits/TTX /斌:在/ usr/local/bin目錄:在/ usr/bin中:/ bin中:在/ usr/local/sbin中:/ usr/sbin目錄:/ sbin目錄:/ tmp目錄/ DPE_SC /工具:在/ usr/X11R6/bin中

src_dir = /充電/ chsLog /就緒

dst_dir =/Core/cdr

CD $ src_dir

lastfile = cat $dst_dir/last_cdr.txt

名= ls -t | grep ^chsLog

fcounter = 1

爲fnames在$文件名

 do 

      fstat=`stat -c %y ${fnames} | cut -d '.' -f1` 

      fstat=`echo ${fstat//[^0-9]/}` 

      if [[ $fstat -gt $lastfile ]] 

      then 

        if [[ $fcounter -eq 1 ]] 

        then 

          echo $fstat > $dst_dir/last_cdr.txt 

          let "fcounter = $fcounter + 1" 

        fi 

        deasn9 -b -a cdrr6 ${fnames} > $dst_dir/$fstat-${fnames}.txt 

      fi 

    done 
+0

聽起來像/ tmp/DPE_SC/LoadUnits/ttx/bin/deasn9在crontab上下文中不起作用,但我們無法僅僅通過查看所使用的行來找出它爲什麼不起作用運行它... – 2013-03-09 12:47:20

+0

@GordonDavisson根據你的要求,在這裏,我把我的整個劇本。它從cmdline運行良好。但只有'deasn9 -b -a cdrr6 $ {fnames}> $ dst_dir/$ fstat - $ {fnames} .txt'行不能從crontab中運行。我看到'echo $ fstat> $ dst_dir/last_cdr.txt'這行從crontab運行良好。來自stderr msg shell的 – tsoomo 2013-03-11 04:53:15

+0

試圖打開名爲cdrr6.spe的文件。但是cdrr6應該是deasn9二進制選項的一部分。我怎麼能告訴它殼牌cdrr6是deasn9的選擇? – tsoomo 2013-03-12 03:58:22

回答

0

我發現我誤會了。 cdrr6不僅是選項。這是cdr格式化庫。然後我從scipt中導出了LIB路徑。 現在它工作完美。

1

記住,你的.profile.bashrc,等。人。在cron中不可用。

環境變量必須直接在crontab中定義。

例如

fstat=myValue 
fname=aName 
@hourly myJob ${fstat} ${fname}