2016-03-25 124 views
0

(我在shell腳本新的。)執行shell腳本whithin另一個腳本提示:沒有這樣的文件或目錄

我已經遇到這個問題了一會兒。我嘗試過不同的方法,但沒有運氣。

說明:

當我的腳本嘗試運行另一個腳本(SiebelMessageCreator.sh,我沒有自己)系統提示:

-bash: ./SiebelMessageCreator.sh: No such file or directory 

但該文件存在,並且具有執行權限:

-rwxr-xr-x 1 owner ownergrp  322 Jun 11 2015 SiebelMessageCreator.sh 

正在執行腳本執行的代碼是:

(cd $ScriptPath; su -c './SiebelMessageCreator.sh' - owner; su -c 'nohup sh SiebelMessageSender.sh &' - owner;) 

這是一個子shell中,因爲我首先想到的是它被扔的是消息,因爲我的劇本在我家目錄中運行(當我運行該腳本,我的根,我已經搬到了我的非根主目錄運行腳本是因爲我無法將腳本[策略]移動到其他腳本所在的目錄中)。

我也試圖與sh SCRIPT.sh./SCRIPT.sh。並且將shebang從bash更改爲ksh,因爲SiebelMessageCreator.sh具有該shell。

su -c 'sh SCRIPT.sh' - owner是必要的。如果腳本以root用戶身份運行,而不是所有者腳本,則會釋放某些內容(?)(這是我的合作伙伴通過以root身份執行它的經驗告訴我的)。所以我作爲所有者執行它。

,我在我的研究中發現的另一件事情是,它可以拋出消息,如果它是一個符號鏈接。我真的不確定腳本的內容是否是符號鏈接。那就是:

#!/bin/ksh 
BASEDIRROOT=/path/to/file/cpp-plwsutil-c 
ore-runtime.jar (path changed on purpose for this question) 

java -classpath $BASEDIRROOT com.hp.cpp.plwsutil.SiebelMessageCreator 

exitCode=$? 

echo "`date -u '+%Y-%m-%d %H:%M:%S %Z'` - Script execution finished with exit code $exitCode." 
exit $exitCode 

正如你可以看到這是一個非常賽普爾腳本,只需調用一個.jar。但我也無法將其添加到我的腳本[政策]。

如果我運行./SiebelMessageCreator.sh手動它工作得很好。但不是與我的腳本。我想這丟棄了我在Google搜索時發現的x64 x32位問題?順便說一句,我自動執行一些任務,./SiebelMessageCreator.shnohup sh SiebelMessageSender.sh &只是最後一步。

任何想法:(?

+2

調用腳本只是或者將PATH =「/ path/to/special/scripts:$ PATH」添加到執行環境中,或者僅使用完整路徑(或完整路徑的envVars)來調用腳本,即'/ path/to/SiebelMsgCent.sh'。祝你好運 – shellter

+0

假設腳本確實位於所有者的主目錄中,則應檢查兩件事。文件名「SiebelMessageCreator.sh」不包含非打印字符。或者檢查您的腳本在文件名「SiebelMessageCreator.sh」中是否包含非打印字符。我強烈建議使用完全限定的路徑,或按照@shellter的建議將路徑添加到PATH中。 – alvits

+1

我必須加上'cd $ ScriptPath'會被忽略,因爲命令'su'中的'-'意味着使用登錄shell,因此子進程將會在所有者的主目錄中產生。如果您正在調用的腳本確實位於'$ ScriptPath'中,則可以省略'-'或使用腳本的完全限定路徑。 – alvits

回答

0

你嘗試?

. ./SiebelMessageCreator.sh 

,還可以執行通過使用`SH scriptName` which shwhich ksh,然後修改第一行#!/bin/ksh

相關問題