我想在shell編程中使用echo語句打印雙引號。在shell編程中打印雙引號
例:
echo "$1,$2,$3,$4";
打印xyz,123,abc,pqrs
如何打印"xyz","123","abc","pqrs";
我曾試圖把雙引號的回聲聲明,但它並沒有被打印。
我想在shell編程中使用echo語句打印雙引號。在shell編程中打印雙引號
例:
echo "$1,$2,$3,$4";
打印xyz,123,abc,pqrs
如何打印"xyz","123","abc","pqrs";
我曾試圖把雙引號的回聲聲明,但它並沒有被打印。
你只要說出來了:
echo "\"$1\",\"$2\",\"$3\",\"$4\""
如前所述here:在雙引號
內附字符( '「')保留了引號中的所有字符的字面 值,用「$」之外, 「'」,「\」,並且,如果啓用了歷史擴展,「!」。字符 「$」和「'」保留雙引號中仍然具有特殊意義(見 殼牌擴張)。反斜槓保留其只有當後跟以下字符之一 特殊含義:「$」,「'」,「」「,‘\’,或 換行符在雙引號,反斜線被後面的 其中之一字符被刪除。沒有 特殊含義前面字符反斜線保持不變。雙引號可以通過用反斜槓它前面加引號雙引號內 。如果啓用, 歷史擴展將除非進行「!」出現在雙 引號使用反斜線進行轉義,'!' 前的反斜槓不會被移除
特殊參數'*'和'@'hav e雙重 報價時的特殊含義(請參閱殼參數擴展)。
你應該逃脫"
,使其在輸出中出現,你可以這樣做:
echo \""$1"\",\""$2"\",\""$3"\",\""$4"\"
如果任何位置參數包含'%'字符,則第一個版本會遇到問題;第二部作品。 –
@JonathanLeffler哦,你是對的,編輯了答案 –
你的論點也應該放在一對雙引號中:'echo「」\「$ 1 \」,\「$ 2 \」,\「$ 3 \」,\「 $ 4 \「」'或其他變量將受IFS分詞和可能的路徑名擴展 – konsolebox
使用printf
,不需要轉義:
printf '"%s","%s","%s","%s";\n' $1 $2 $3 $4
和後;
也打印了!
只有printf與所有shell不兼容 – konsolebox
嗯..'printf'是由[ POSIX](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/printf.html)。 – devnull
是的,但不是在系統V中。 – konsolebox
應該'printf'不'print' –
你大概的意思是說'echo',而不是'print'! – devnull
@snyder在其他shell中也有一個打印命令。 – konsolebox