Software Design7月号未掲載部分
Sat Jun 17 09:08:43 JST 2017 (modified: Sun Oct 1 10:50:27 JST 2017)
views: 1804, keywords:bash,SoftwareDesign,UNIX/Linuxサーバ,執筆,シェル芸 この記事は最終更新日が7年以上前のものです。
本日発売です。bashのマニアック機能について「使うなよ!絶対使うなよ!!」というテイストで書きました。
本日発売。8ページくらい書きました!! | Software Design 2017年7月号 #gihyojp https://t.co/U3DL5g10Ys
— Ryuichi Ueda (@ryuichiueda) 2017年6月16日
で、宣伝部分だと味気ないので、調子に乗って書きすぎて掲載できなかった部分をあまり加工せずに貼り付けておきまっす。bash3.2とbash4.4で挙動の違う例、4.0以降の新機能の例です。
数字のブレース展開のゼロ埋め
ブレース展開においてゼロ埋めができるようになっています。bash-3.2$ echo {01..03}
1 2 3
bash-4.4$ echo {01..03}
01 02 03
Unicodeのコードポイント指定
Unicodeのコードポイントを指定して文字を出力できます。
###UnicodeとUTF-8の16進数を指定してみる例### bash-3.2$ echo -e '\\U1F363' '\\xF0\\x9F\\x8D\\xA3' \\U1F363 🍣 bash-4.4$ echo -e '\\U1F363' '\\xF0\\x9F\\x8D\\xA3' 🍣 🍣
次の例は、 この機能とxxdというコマンドを使ってUnicodeから UTF-8へ変換するワンライナーです。
bash-4.4$ echo -en '\\U1F363' | xxd -ps
f09f8da3
case文で使う「;;&」
次のcase文は、SHELLという変数の文字列がbashで終わっている場合に 「bash」と表示するものです。「\bash」というパターンにマッチして echoを実行し、次の「\」は評価されずに終わっています。
bash-3.2$ case $SHELL in *bash ) echo bash ;; * ) echo defalut ;; esac
bash
バージョン4.0ではこの挙動に加え、 「;;&」を用いて次のパターンも評価させることが可能となりました。
bash-4.4$ case $SHELL in *bash ) echo bash ;; * ) echo defalut ;; esac
bash
bash-4.4$ case $SHELL in *bash ) echo bash ;;& * ) echo defalut ;; esac
bash
defalut
大文字を小文字に強制変更する変数
declare -lで変数を宣言すると、代入した大文字が小文字に変換されます。
bash-4.4$ declare -l yesno
bash-4.4$ yesno=YeS
bash-4.4$ echo $yesno
yes #小文字になる
また、例は省略しますが、declare -uで宣言すると大文字に変換されます。
普通の変数に対して後から小文字大文字を変換することもできます。 変数の後ろに「^」や「,」をつけます。
bash-4.4$ y=YeS
bash-4.4$ echo ${y^^} #大文字に
YES
bash-4.4$ echo ${y,,} #小文字に
yes
bash-4.4$ echo ${y,} #1文字目だけ小文字に
yeS
ということで
買って読んでいただければ幸いです。
[amazonjs asin="B06ZY6PQKQ" locale="JP" title="ソフトウェアデザイン 2017年 07 月号 雑誌"]
こちらもお願いしまっす! [amazonjs asin="B00XKU53U4" locale="JP" title="シェルプログラミング実用テクニック"]