アンチcshとしては、Bシェル系でもcshの${var:e}みたいなことを条件付きでできることを示さざるを得ない。
- ${var#pattern}は、varの先頭からpatternに最短一致した部分を取り除いた文字列
- ${var##pattern}は、varの先頭からpatternに最長一致した部分を取り除いた文字列
- ${var%pattern}は、varの末尾からpatternに最短一致した部分を取り除いた文字列
- ${var%%pattern}は、varの末尾からpatternに最長一致した部分を取り除いた文字列
例えば
% var=foo/bar/baz.tar.gz
% echo ${var#*/}
bar/baz/tar.gz
% echo ${var##*/}
baz.tar.gz
% echo ${var%.*}
foo/bar/baz.tar
% echo ${var%%.*}
foo/bar/baz
% watch_out=foo.bar/baz.tar.gz
% echo ${watch_out%%.*}
foo
こんな感じ。
これはてっきりbashの拡張機能だと思っていたので、多少の可搬性を犠牲にしてでも楽をしたいときのみshebangで
http://www.in-ulm.de/~mascheck/various/ash/
手元のash/dashでは確かに#, %を使えた。ashは拡張されていないイメージだったので、意外。
まあashでも通ると言うだけで、Solarisの/bin/shとかだとやっぱり駄目なので、この機能を使うときはbashという選択で、引き続き問題ないかな。
これはてっきりbashの拡張機能だと思っていたので、多少の可搬性を犠牲にしてでも楽をしたいときのみshebangで
#!/bin/bashと指定して使っていた。が、実は割と初期のashで既に拡張されていたらしい。
http://www.in-ulm.de/~mascheck/various/ash/
手元のash/dashでは確かに#, %を使えた。ashは拡張されていないイメージだったので、意外。
まあashでも通ると言うだけで、Solarisの/bin/shとかだとやっぱり駄目なので、この機能を使うときはbashという選択で、引き続き問題ないかな。
0 件のコメント:
コメントを投稿