2015-11-19 143 views
0

我只是從我的C++程序調用shell腳本。 Shell腳本正在成功執行。但我無法接收通過C++程序傳遞給shell腳本的命令行參數。將命令行參數傳遞給從C++程序調用的bash shell腳本

#include<iostream> 


    int main() 
    { 
     system(". script.sh a b v d d"); 


     return 0; 
    } 

SHELL

echo "start | $2 | $1 | $3" 

O/P:

./a.out 
start | | | 
+0

當你運行它時會發生什麼? –

+0

@MatsPetersson附上輸出 –

回答

1

當你想一個shell腳本的內容加載到當前的shell,使用的語法應用。這意味着,加載變量定義,函數等等。

system(". script.sh a b v d d"); 
     ^^^^^^^^^^^ 

這是相當於來運行:

system("source script.sh a b v d d"); 
     ^^^^^^^^^^^^^^^^ 

您應該具有以下語法之一調用腳本:

system("./script.sh a b v d d"); 
system("bash script.sh a b v d d"); 

所以,當你執行你的程序,唯一發生的事情是你的腳本是來源'd。沒有任何參數傳入它。這給了你沒有任何輸入參數的運行你的echo "start | $2 | $1 | $3"的輸出。

+1

你能解釋一下爲什麼我們要這樣打電話 –

+1

當然!我已經添加了一個解釋。問候! – Rubens

+0

我以前使用過這個源代碼命令...除了加載它會執行到命令。儘管它執行命令,但不會帶參數。這相當於逐個運行一個命令。我是否正確 –

相關問題