簡體   English   中英

從bash / shell腳本調用perl腳本

[英]Calling a perl script from bash/shell script

我試圖根據在cron中從哪個環境調用一個位於不同目錄中的perl腳本(從shell腳本):

#!/bin/bash
# triggerCron.sh - set different environments, set path to perl scripts, calls script

TMP_HOME=/home/localweb/htdocs/cgi-bin/user1/localroot

if [ "$1" = "dev" ] || [ "$1" = "uat" ] || [ "$1" = "prd" ]
then
echo "Calling $1 OBTriggerCron.pl"
export PATH=$TMP_HOME/$1:$PATH
echo $PATH
./OBTriggerCron.pl
echo "Complete."
else
    echo "Val Not Set: $1"
fi

我的想法是,我可以先導出路徑,然后調用腳本...然后創建一個crontab,如下所示:

30 4 * * * /usr/bin/triggerCron.sh dev
30 4 * * * /usr/bin/triggerCron.sh uat
30 4 * * * /usr/bin/triggerCron.sh prd

但是當我運行它時,我得到:

bash-3.00$ triggerCron.sh dev
Calling dev OBTriggerCron.pl
/home/localweb/htdocs/cgi-bin/user1/localroot/dev:/home/localweb/htdocs/cgi-bin/user1/localroot/dev:/home/localweb/htdocs/cgi-bin/user1/localroot/dev:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/ufs/00/home/user1/bin:/ufs/00/home/user1/mysql-tools:/home/ICoracle/bin
Can't open perl script "OBTriggerCron.pl": No such file or directory

基本上,我正在嘗試臨時設置路徑,調用腳本並退出...但是到目前為止,還沒有運氣...是的,每個目錄中都有一個OBTRiggerCron.pl腳本的副本。

謝謝你的幫助。

代替

./OBTriggerCron.pl

做:

$TMP_HOME/$1/OBTriggerCron.pl

在這種情況下,無需導出PATH。

./OBTriggerCron.pl

意味着在當前目錄中執行OBTriggerCron.pl。 你需要

OBTriggerCron.pl

它將在PATH中查找。

謝謝您的幫助! 這兩個答案都有幫助,但最大的幫助是Lee Duhem。...我正在撥打設置文件(yml),我“需要確保我在正確的導演中” ** y ...所以我把所有人建議,現在看起來像這樣:

TMP_HOME=/home/localweb/htdocs/cgi-bin/user1/localroot

if [ "$1" = "dev" ] || [ "$1" = "uat" ] || [ "$1" = "prd" ]
then
echo "Calling $1 OBTriggerCron.pl"
cd $TMP_HOME/$1
OBTriggerCron.pl
echo "Complete."
else
echo "Val Not Set: $1"
fi

而且有效! 感謝大家!

暫無
暫無

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

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