簡體   English   中英

在另一個bash腳本中執行腳本

[英]Execute script to inside another bash script

在我的服務器上,我嘗試運行:

#!/bin/bash

PATH="/SANCFS/stats/scripts/"

for (( i=6;i<=8;i++ ));
do
   echo "Running $i"

   exec "/SANCFS/stats/scripts/load_cdrs.sh --debug --config /SANCFS/stats/scripts/iquall-mm4-cdr.cfg --date '2018-10-0"$i"' >> /home/stats/201810/load_cdrsIMRMM4-0"$i".ok 2>>/home/stats/201810/load_cdrsIMRMM4-0"$i".err"
done

結果是:

無法執行:沒有這樣的文件或目錄

您的幫助,如何編輯/修改才能成功運行?

這是重現問題的簡便方法:

$ exec "echo "hello world""
bash: exec: echo hello: not found

bash中運行命令不需要添加exec或引號:

$ echo "hello world"
hello world

另外,在一種情況下,您在單引號中使用$i ,並且似乎無緣無故覆蓋了外殼搜索路徑PATH 應用於您的示例:

#!/bin/bash

for (( i=6;i<=8;i++ ));
do
   echo "Running $i"

  /SANCFS/stats/scripts/load_cdrs.sh --debug --config /SANCFS/stats/scripts/iquall-mm4-cdr.cfg --date "2018-10-0$i" >> /home/stats/201810/load_cdrsIMRMM4-0"$i".ok 2>>/home/stats/201810/load_cdrsIMRMM4-0"$i".err
done

不要使用exec 它將當前的進程替換為運行指定命令的進程,因此您無需重復循環。 只需正常執行命令即可。

exec的參數不應該全部放在單個引號中。 也許您將其與eval混淆了?

#!/bin/bash

PATH="/SANCFS/stats/scripts/"

for (( i=6;i<=8;i++ ));
do
   echo "Running $i"

   /SANCFS/stats/scripts/load_cdrs.sh --debug --config /SANCFS/stats/scripts/iquall-mm4-cdr.cfg --date 2018-10-0"$i" >> /home/stats/201810/load_cdrsIMRMM4-0"$i".ok 2>>/home/stats/201810/load_cdrsIMRMM4-0"$i".err
done

您可以將exec替換為點(。)。如果嘗試5個選項,則應看到不同的選項

$ exec /bin/bash

$ /bin/bash
$ . /bin/bash
$ ./bin/bash
$ /bin/bash /bin/bash

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM