[英]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.