文字列(String)
結合
SYNTAX
var=$var1$var2
DESC
文字列を連結する
a=aaa;
b=bbb;
c=$a$b
echo $a$b
echo $c
行間を結合
DESC
var="aaa"\
"bbb"\
"ccc"\
部分文字列(Substring)
部分文字列を取得するには特殊な変数展開をつかう
SYNTAX
${var:offeset:length}
var=0123456789
echo ${var:2:6}
echo ${var:2}
sub=$(expr substr "$str" 2 3) # bcd
sub=$(echo "$str" | cut -c2-4) # bcd
sub=$(echo "$str" | cut -c-4) # abcd
sub=$(echo "$str" | cut -c4-) # defg
変数展開
DESC
特殊な変数展開を利用することで、文字列操作として使える。
パターンマッチ(PatternMatch) . StringMatch MatchString
path=d:/foo/bar.flv
if [[ $path = *.flv ]]; then
echo '$path begins with "flv"'
else
echo "false"
fi
regexp による検索
str='hoge.c'
pattern='[a-zA-Z0-9]\+\.[a-zA-Z0-9]\+'
if expr "$str" : "$pattern" >/dev/null 2>&1; then
echo "match"
fi
置換(replace)
POINT
変数展開を使うことで、文字列置換ができる。
SYNTAX
${var/pattern/replace}
${var//pattern/replace}
DESC
pattern にマッチした文字列を replace に置き換える。
pattern には * ? といったワイルドカードが利用できる。
regexp を利用するには, sed, perl を利用する。
$変数名 又は ${変数名} その値
${var:-文字列} 変数が存在し空でなければその値、それ以外なら文字列
${var:=文字列} 変数が存在し空でなければその値、それ以外なら変数に文字列を設定
${var:?文字列} 変数が存在し空でなければその値、それ以外なら文字列を出力して終了
${var:+文字列} 変数が存在し空でなければその文字列、それ以外なら空
${var:位置}
${var:位置:長さ}
${var#パターン}
${var##パターン}
v=d:/foo/bar/goo.txt
echo ${v#*/}
echo ${v##*/}
${var%パターン}
${var%%パターン}
v=d:/foo/bar/goo.txt
echo ${v%/*}
${var/パターン/文字列}
${var//パターン/文字列}
path="d:/test.tmp"
${path/.tmp/.flv}
path=d:/foo/a.txt
${path//\//}
var=0123456789
echo ${var:2:6}
WARNING
var="foo.htm";
echo ${var#*.}
v="foo.htm";
echo ${v%*.htm}
var=aaabbbccc
echo ${var#bbb}
var=aaabbbccc
echo ${var#???bbb}
var=aaabbbcccbbbccc
echo ${var/bbb/_}
var=aaabbbcccbbbccc
echo ${var//bbb/_}