web-dev-qa-db-ja.com

シェルプログラミングで二重引用符を出力する

シェルプログラミングでechoステートメントを使用して二重引用符を印刷したい。

echo "$1,$2,$3,$4";

xyz,123,abc,pqrs

印刷方法"xyz","123","abc","pqrs";

Echoステートメントに二重引用符を付けようとしましたが、印刷されませんでした。

20
Nagaraju

あなたはそれらを引用する必要があります:

echo "\"$1\",\"$2\",\"$3\",\"$4\""

前述のとおり、 ここ

文字を二重引用符( '"')で囲むと、 '$'、 '`'、 '\'、および履歴展開が有効な場合は '!'を除き、引用符内のすべての文字のリテラル値が保持されます。文字 '$'および '`'は、二重引用符で囲まれた特別な意味を保持します(シェル拡張を参照)。バックスラッシュは、 '$'、 '`'、 '"'、 '\'、または改行。二重引用符内では、これらの文字のいずれかが後に続くバックスラッシュは削除されます。特別な意味のない文字の前のバックスラッシュは変更されません。二重引用符は、二重引用符の前にバックスラッシュを付けることで引用できます。有効にすると、二重引用符で囲まれた「!」がバックスラッシュを使用してエスケープされない限り、履歴展開が実行されます。 「!」の前のバックスラッシュは削除されません。

特別なパラメーター「*」と「@」は、二重引用符で囲まれている場合に特別な意味を持ちます(シェルパラメーターの展開を参照)。

30
konsolebox

printfを使用します。エスケープは不要です。

printf '"%s","%s","%s","%s";\n' $1 $2 $3 $4

および末尾の;も印刷されます!

8
devnull

"をエスケープして、出力で表示できるようにする必要があります。これを行うことができます。

echo \""$1"\",\""$2"\",\""$3"\",\""$4"\"
4
Ashish Gaur