Bash シングルクウォート エスケープ

Bashで多層シングルクォーテーションをエスケープする

Linuxパソコン・サーバーのコマンドライン、Bash言語で、シングルクウォートの中のシングルクウォートの中のシングルクウォートをエスケープする方法について紹介します。じゃあ、更にこの<code>'''</code>で囲まれたコードのなかにシングルクウォートがある場合は…

Shou Arisaka
1 分で読める
2019年5月24日

Linuxパソコン・サーバーのコマンドライン、Bash言語で、シングルクウォートの中のシングルクウォートの中のシングルクウォートをエスケープする方法について紹介します。

Image

bashにおいてシングルクウォートのエスケープは以下。

'\''

じゃあ、更にこの'''で囲まれたコードのなかにシングルクウォートがある場合はどうやってエスケープすればよいのか?

'\''\'\'''\''

僕もこのようなコードを書いて、実際にシングルクウォートの中のシングルクウォートの中のシングルクウォートという状況を作り出すに至ったが、多層シングルクウォートのエスケープは予想以上に複雑であるようだ。

cd "${1}" && ls | xargs -I {} bash -c ' dirname="$( echo "{}" | awk '\''{print $10}'\'' )" ; [[ -d "${dirname}" ]] && [[ ! "${dirname}" =~ ^\.\.$ ]] && echo "{}" | awk -v dirname="${dirname}" '\''{ " du -h "dirname" | tail -1 | awk '\''\'\'''\''{ print $1 }'\''\'\'''\'' " |& getline $11 ; print $0 }'\''  ' ; cd - # great

さらに深層のシングルクウォートエスケープシーケンスを知りたい場合は以下のページと以下のスクリプトが役に立つだろう。

quotify(){

cat << 'EOT' > ${HOME}/quotify ; chmod 755 ${HOME}/quotify ; ${HOME}/quotify
#!/usr/bin/perl -pl
s/'/'\\''/g;
$_ = qq['$_'];
EOT

}

bash - How to escape single quotes within single quoted strings? - Stack Overflow

この記事をシェア

Shou Arisaka 2019年5月24日

🔗 リンクをコピー