難読化シェル芸の本を書きました。オンデマンド本なので、ほとんど書店に並びません~amazonでポチっとお願いします。kindle版もあります。https://amzn.to/2D0FDNmマイナビBOOKSでも販売中です。本書では、当機能を「ファイル名展開」と表記しています。Expansion"、日本語訳でも"パス名展開"であり、正しくはこちらの名称で記載した方がより適切でした。置換の仕様が複雑です。以下の通り整理しました。"s/pattern$/word/"13ページ:${変数名:offset:length}の説明¶offset、lengthが負の数の場合を補記します。offsetですが、マイナスを指定した場合は文法として別のパラメータ展開になります。${hoge:-fuga}fugalengthは、以下の通りです。本書では、大文字小文字の変換を${変数名^}、${変数名^^}、${変数名,}、${変数名,,}と表現していました。正確には${変数名^pattern}という形式になり、patternを省略した形となります。全ての文字にマッチします。pageでは別のニュアンスで使われています。シェル変数、環境変数を別のものとして表現しているというより、シェル変数が環境変数を包含しているような表現になっています。定義(別々のものとして扱う)して説明しています。39ページ:echoの代替¶exprでも代替できます。本書では、foldコマンドより折り返しをしていますが、foldコマンドはバイト単位で処理するため、"難読化シェル芸難"が16バイトにならない言語環境では上手く動作しませんでした。grepを利用することで言語環境の違いを考慮することなく処理することができます。実は、今のzwsは以下の制限があります。いった入力のパターンも受け付けるように修正したい所です。<<EOSstringEOS修正方法を少し考えてみたいと思います(修正できたらこちらでお知らせします)71ページ:算術式展開で数値を得る¶bashのver5において、算術式展開を評価する仕様が変わったらしく、インクリメントと乗算を組み合わせた式が期待通りに動作しません。ver5ではエラーになります。ver5環境において、本書の記号難読化シェル芸(ページ71)を動かすには、以下を置き換える必要があります。自分自身でXORすると0になる。わからないが1になる。自分自身でXORすると0になる。わからないが1になる。以下のような条件においては代入が可能であることを補記しておきます。123のように、パラメタ展開による代入は可能です。80ページ:${!#}の説明¶この部分は明確に誤りであったため、訂正します。expansion)と呼ばれるものになります。変数の中身を変数名として扱う機能であり、以下の動作になります。変数間接参照展開と等価aaa改めて、${!#}の動作を解説すると、与えられた引数の数を表す$#に対して、変数間接展開をしていることになります。この場合、$#は0となりますので、結果として、${!#}は${0}と等価となる訳です。122ページ:英単語の先頭文字を大文字に変換する¶sed単体でも可能であると、読者様よりアドバイスを頂きました。Buz123ページ:標準入力を受け取る¶testコマンドの-pを使う以下の方法ですが、パイプからの入力だけを判定しています。ヒアドキュメントやヒアストリングなどは受け取らない点、ご留意ください。pipeSpecialThanks¶くおんさん本書について、多くの指摘・アドバイスを頂きました。お買い上げのお客様にマイナビ特製Tシャツをプレゼント。6階カウンター、または店員までお声掛けください。Tシャツの枚数・サイズには限りがありますので、予めご了承ください。