2010-07-15 92 views
2
name="Rahul Kapgate arg" 
temp=$name 
./a.out -a "$temp" 

這將給我一個以下輸出:: Rahul Kapgate arg傳遞參數通過殼到C

代替./a.out -a "$temp"如果我把下面的邏輯則產生歧輸出。

cmd="./a.out -a \"$temp\"" 
$cmd 

輸出:: "Rahul

[a.out的是什麼,但打印第一個參數到C unsing OPTARG())

我期待着使用第二個選項PLZ產生相同的輸出幫我。

+1

問題的標題真的不是關於傳遞參數到C;不管語言如何,結果都是一樣的。也許「執行一個bash變量作爲一個命令」或者沿着這些方向會更好。 – Hudson 2010-07-15 11:48:13

+0

這是在某種程度上與不同的用戶有關[這個問題](http://stackoverflow.com/questions/3253198/pass-date-to-a-c-program-from-shell-script)? – 2010-07-15 13:05:01

+0

Bash常見問題entry #50 2010-07-15 11:14:54

回答

1

由於the link provided by Ignacio中的信息表明,您應該儘量避免將命令放入變量中。然而,這可能適用於你(也基於那裏的信息):

cmd="./a.out" 
args=(-a "$temp") 
$cmd "${args[@]}"