(我在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.sh
和nohup sh SiebelMessageSender.sh &
只是最後一步。
任何想法:(?
調用腳本只是或者將PATH =「/ path/to/special/scripts:$ PATH」添加到執行環境中,或者僅使用完整路徑(或完整路徑的envVars)來調用腳本,即'/ path/to/SiebelMsgCent.sh'。祝你好運 – shellter
假設腳本確實位於所有者的主目錄中,則應檢查兩件事。文件名「SiebelMessageCreator.sh」不包含非打印字符。或者檢查您的腳本在文件名「SiebelMessageCreator.sh」中是否包含非打印字符。我強烈建議使用完全限定的路徑,或按照@shellter的建議將路徑添加到PATH中。 – alvits
我必須加上'cd $ ScriptPath'會被忽略,因爲命令'su'中的'-'意味着使用登錄shell,因此子進程將會在所有者的主目錄中產生。如果您正在調用的腳本確實位於'$ ScriptPath'中,則可以省略'-'或使用腳本的完全限定路徑。 – alvits