質問: ### 前提・実現したいこと 特に問題でもエラーでもなく急いでもいません。お時間のあるときにご教示いただきたく。 以下のようにfor文で#を使っているコマンドを教えてもらったのですが、#の意味が知りたいです。 ``` for i in /hoge/hoge/[0-9]* do echo -n "ID ${i#/*/}: $(cat $i/hoge)" egrep "^[0-9a-f]|^hoge:|^hoge:|^hoge:" $i/hoge done ``` ### 該当のソースコード echo -n "ID ${i#/*/}: $(cat $i/hoge)" の行の#です。 ### 試したこと コマンドは正常に実行されることを確認した。 ### 補足情報(言語/FW/ツール等のバージョンなど)
回答: シェル変数で、展開する際にシェル内部で文字列置換をする事ができる機能です。 ${HOGE#パターン} → 前方一致でのマッチ部分削除(最短マッチ) ${HOGE##パターン} → 前方一致でのマッチ部分削除(最長マッチ) ${HOGE%パターン} → 後方一致でのマッチ部分削除(最短マッチ) ${HOGE%%パターン} → 後方一致でのマッチ部分削除(最長マッチ) HOGE=/home/user/hoge -- 最短除外 echo ${HOGE#/*/} -> user/hoge