2

シェル コマンド cmd には、空白と一重引用符と二重引用符を含めることができます。

これらの引用符をエスケープして、コマンドを POSIX シェルに正しく渡す方法:

>dash -c 'コマンド'

二重引用符として指摘されているもう1つの質問は、二重引用符について尋ねます。そこにある答えの1つはおそらくうまくいくでしょう-コマンドを分割し、連結された引用符を使用することです。たとえば、cmd が

cd "dir"; ls 'foobar'

次に、それを次のように変換します

>dash -c 'cd "dir"; ls '"'foobar'"

これは厄介です...もっと簡単な方法はありませんか?

追加: 誰も私を理解していないようです... 入力、文字列 (完全に正確には、ASCII テーブルの 0 から 127 までの印刷可能な ASCII 文字から作成) を受け取る一般的な手順、アルゴリズムが必要なだけです。 2 番目の文字列を出力します。要件は、最初の文字列がこのように実行される場合

POSIX_shell>string1

結果は同じです

>POSIX_shell -c string2

私は今より明確になりましたか、教えてください。

4

1 に答える 1

3

まず、ご指摘のとおり、面倒なことは避けてください。必要に応じて、単純にしてください。単一引用符内のすべての二重引用符は問題ありません。二重引用符内のすべての一重引用符は問題になりません。

#Example:
echo '"These are double quoted"'
echo "'These are single quoted'"

3 つ目 (煩雑で、可能であればこれは避けてください)、単一引用符で囲みたい単一引用符は、複数の引用符を使用してエスケープする必要があります。

echo ''"'"'These are all single quoted, but messy'"'"''

第 4 に、二重引用符内の二重引用符は、バックスラッシュを使用してエスケープする必要があります\

echo "\"These are double quoted\""
于 2016-06-11T02:13:13.620 に答える