2012-11-07 40 views
0

的我想在bash來實現這一目標:正確使用引號

for i in {1..2} 
do 
for j in {1..2} 
do 
echo $i $j >> tmp.txt 
done 
done 

cat tmp.txt 
1 1 
1 2 
2 1 
2 2 

不過,我想,引號裏的回聲變量,像這樣做:

cmd=" 
for i in {1..2}; 
do for j in {1..2}; 
do echo \$i "\$j" '\$i' "'\$j'" \$i "'$j'" \'$i\' \"$j\" >> tmp.txt; 
done; 
done 
" 
eval $cmd 

我似乎無法到得到正確的引號。是否有可能實現我想要的?

謝謝!

+0

更好地提供預期的輸出。而在尋求幫助時,縮進不僅僅是一種選擇。 –

+0

我不禁注意到,在StackOverflow代碼渲染中'\ $ j'是黑色的。我不知道爲什麼,但它可能與你的問題有關。然後再次,它可能不會。 –

+0

嗨sputnick。我確實用cat tmp.txt提供了預期的輸出。我不確定我是否理解你對縮進的評論。 –

回答

3

只需使用單引號,並確保在每個done之前加上分號。

cmd='for i in {1..2}; do 
for j in {1..2}; do 
echo $i $j >> tmp.txt; 
done; 
done' 
eval $cmd 
+0

我簡直不敢相信這是拉斯曼的簡單。謝謝。 –