2014-04-19 36 views
0

我正在從我的linux應用程序調用系統調用。

/*某些file.c */ file.c被嵌入到名爲file.elf的可執行文件中。這個file.elf存在於目錄 /home/ubuntu/file.elf 當我執行file.elf時,echo $ BB_PATH打印可執行目錄路徑。我在期待目錄路徑是放置腳本的路徑。即 /home/ubuntu/Desktop/BIN/BB/Chk_File.sh

這是如何實現的?

if(!(system("ls /home/ubuntu/Desktop/BIN/BB"))) 
    { 
    /* Test Path : remove after testing */ 
    dw_flag = system("/home/ubuntu/Desktop/BIN/BB/Chk_File.sh");//Call to execute Script 
    dw_flag = WEXITSTATUS(dw_flag); 
    } 

此輪流調用文件CHK_File.sh

ret_val=0 

BB_PATH=$(pwd) 

echo $BB_PATH 

if [ ! -f ACTION_TAG.txt ] 
then 
    echo " ACTION_TAG NOT PRESENT " 
else 

ret_val=1  
fi 

echo $ret_val 
exit $ret_val 
+0

正如我想你現在已經發現,一般來說,當前目錄與找到shell腳本的目錄無關。 –

+0

可能的重複[可以Bash腳本告訴它存儲在什麼目錄?](http://stackoverflow.com/questions/59895/can-a-bash-script-tell-what-directory-its-stored-in) –

回答

0

您可以使用dirname得到shell腳本的目錄。

echo `dirname $0` 
+0

你必須引用''$ 0'',你也應該使用''()''而不是反引號。這裏有個技巧:''a ='one/two three/four'&& dirname $ a''打印兩行:''one''和''three'',而''a ='一/二三/ 4'&& dirname「$ a」''正確打印''one/two three'' –

0

添加此下方臺詞幫我

if [ -L $0 ] ; then 
    DIR=$(dirname $(readlink -f $0)) ; 
else 
    DIR=$(dirname $0) ; 
fi ; 


echo $DIR 

現在我們不需要擔心從目錄中調用腳本!太好了!

+0

沒有理由檢查它是否是符號鏈接,'「$(dirname」$(readlink -f $ 0)「)」'會在常規文件上工作也是如此。 – BroSlow