2010-04-20 24 views
3

只要我需要寫寫作「在bash的文件

"echo" t${count} = "$"t${count}" 

到一個文本文件,包括所有的這樣的輸出會是這樣的:

echo " t1 = $t1" 

用」,因爲它們是。所以,我曾嘗試:

count=1 
saveIFS="$IFS" 
IFS=$'\n' 
array=($(<TEST.txt)) 
IFS="$saveIFS" 
for i in "${array[@]}" 
do 
echo "echo" t${count} = "$"t${count}"" 
((count++)) 
done >> long1.txt 

和變化,在這個如:

echo "echo" """"" t${count} = "$"t${count}"" 

但我想在雙包裝「僅僅是變量

理念

回答

7

有?實際上沒有用變量的雙引號包裝,第一個引號開始,第二個引號結束引用的字符串。不過,你可以連接字符串,但是你想要的,所以"$"t${count}""將實際相當於"$"t${count},以引號$ -sign開始,後跟't',後跟count-variable。回到你的問題,要得到一個「,你可以把它放在一個字符串中(用單引號括起來),就像echo '"my string"'一樣,注意儘管這些變量不會被字面字符串替代,或者你可以逃避它,就像echo "\"my string\""一樣,它會在字符串中放置一個「literal」,並且不會終止它。

1

你需要逃脫雙引號(也美元符號):

echo "\" t = \$t\"" 
3
echo "echo \"t${count} = $t${count}\"" 
1

另一個報價變種(更多鍛鍊的當然比溶液):

# concatenate alternating single- & double-quoted blocks of substrings 
count=1 
echo 'echo "t'"${count}"' = $t'"${count}"'"'