- PR -

シェルスクリプト バッククォーテーション内の処理。

投稿者投稿内容
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-09-17 13:53
こんにちは。
引用:
※ 追記は「問題」ではなく、実際にクォートを多段階に入れ子をした例を書いたものです。より大きいレベルの時どうなるかを考えると…、羊さんを数える代わりになるかも。


せっかくですので、これも問題にしてみましょう。
尤も、実用性は恐らく薄めなので、あまり気張らなくても良いかと思います。いや、むしろやらない方が良いかも。

問題1.
 Tab文字をコマンド引数に混ぜるためには、クォートなりを使う必要があります。

 例:# echo 'hoge<TAB>hoge'  ← <TAB> は Tab文字 ( Ctrl-V、Tab で入力)

 su の -c でこういったコマンドを指定するには、どのような quoting が必要でしょうか。さらに、su -c で入れ子にしていく場合はどうすれば良いでしょうか。
 ただし、ダブルクォートは使わず、シングルクォートを使用してください。
 ※ダブルクォートを使用する例は、一番下の例を参考にしてください。

 Level0:# echo 'hoge<TAB>hoge'
 Level1:# su -c 'echo hoge<TAB>hoge' を元にどうぞ
 Level2:# su -c 'su -c echo hoge<TAB>hoge' を元にどうぞ
 Level3:# su -c 'su -c su -c echo hoge<TAB>hoge' を元にどうぞ
 …

問題2.
 問題1.において、シングルクォートも使わない方法を考えてください。

 Level0:# echo hoge<TAB>hoge を元にどうぞ
 Level1:# su -c echo hoge<TAB>hoge を元にどうぞ
 …

例:ダブルクォートを使う場合
 Level0:# echo "hoge<TAB>hoge"
 Level1:# su -c "echo \"hoge<TAB>hoge\""
 Level2:# su -c "su -c \"echo \\\"hoge<TAB>hoge\\\"\""
 Level3:# su -c "su -c \"su -c \\\"echo \\\\\\\"hoge<TAB>hoge\\\\\\\"\\\"\""
 …

※何人できる/やる気になるでしょうか??

[ メッセージ編集済み 編集者: angel 編集日時 2005-09-17 14:04 ]

スキルアップ/キャリアアップ(JOB@IT)