13,171
回編集
細 (文字列「<source lang」を「<syntaxhighlight lang」に置換) |
|||
| 55行目: | 55行目: | ||
下表に、主な変数の操作を示す。<br> | 下表に、主な変数の操作を示す。<br> | ||
<center> | <center> | ||
{| class="wikitable" | {| class="wikitable" | style="background-color:#fefefe;" | ||
|- | |- | ||
! 指定方法 ! | ! style="background-color:#66CCFF;" | 指定方法 | ||
! style="background-color:#66CCFF;" | 操作内容 | |||
|- | |- | ||
| ${変数名:開始位置:長さ} || 開始位置から指定した長さ分の文字列を切り出す | | ${変数名:開始位置:長さ} || 開始位置から指定した長さ分の文字列を切り出す | ||
| 72行目: | 73行目: | ||
|} | |} | ||
</center> | </center> | ||
<br> | |||
下表に、その他の文字列の操作を示す。<br> | |||
<center> | |||
{| class="wikitable" | style="background-color:#fefefe;" | |||
|- | |||
! style="background-color:#66CCFF;" | 指定方法 | |||
! style="background-color:#66CCFF;" | 操作内容 | |||
|- | |||
| ${@:2} || 2つ目以降の引数を取得する。 | |||
|- | |||
| ${変数名:-文字列} || "変数名"が未定義またはNULLの場合、"文字列"が代入される。 | |||
|- | |||
| ${変数名:=文字列} || "変数名"が未定義またはNULLの場合、"文字列"が代入される。 | |||
|- | |||
| ${変数名:?文字列} || "変数名"が未定義またはNULLの場合、"文字列"とエラーを出力して終了する。 | |||
|- | |||
| ${変数名:+文字列} || "変数名"が未定義またはNULLの場合はNULLを代入して、それ以外の場合は"文字列"を代入する。 | |||
|- | |||
| ${変数名%文字列} || 最短の接尾語を取り除く。<br>例えば、拡張子名を削除する時に使用する。 | |||
|- | |||
| ${変数名%%文字列} || 最長の接尾語を取り除く。 | |||
|- | |||
| ${変数名#文字列} || 最短の接頭語を取り除く。<br>例えば、ディレクトリのパス名から文字列$HOMEを削除する時に使用する。 | |||
|- | |||
| ${変数名##文字列} || 最長の接頭語を取り除く。<br>例えば、ディレクトリのパス名から任意の文字列を削除する時に使用する。 | |||
|- | |||
| $'文字列' || Bashのみ使用可能。<br>例えば、<code>echo 'a\te';</code>と記述する場合は<code>a\te</code>と出力されるが、<br><code>echo $'a\te'</code>と記述する場合は<code>a e</code>と出力される。<br>\UhhhhhhhhとUnicode(ISO/IEC 10646 )がある。 | |||
|} | |||
</center> | |||
<br> | |||
Shell Parameter Expansion(:)の有無により、変数が定義されているかどうか、および、値がNULLかどうかで動作が変わる。<br> | |||
<center> | |||
{| class="wikitable" | style="background-color:#fefefe;" | |||
|- | |||
! style="background-color:#66CCFF;" | 指定方法 | |||
! style="background-color:#66CCFF;" | 変数が定義されており値がNULLではない場合 | |||
! style="background-color:#66CCFF;" | 変数が定義されており値がNULLの場合 | |||
! style="background-color:#66CCFF;" | 変数が未定義の場合 | |||
|- | |||
| ${変数名:-文字列} || 既存の値を返す。 || "文字列"を返す。 || "文字列"を返す。 | |||
|- | |||
| ${変数名-文字列} || 既存の値を返す。 || NULLを返す。 || "文字列"を返す。 | |||
|- | |||
| ${変数名:=文字列} || 既存の値を返す。 || "文字列"を代入する。 || "文字列"を代入する。 | |||
|- | |||
| ${変数名=文字列} || 既存の値を返す。 || NULLを返す。 || "文字列"を代入する。 | |||
|- | |||
| ${変数名:?文字列} || 既存の値を返す。 || エラーを出力して終了する。 || エラーを出力して終了する。 | |||
|- | |||
| ${変数名?文字列} || 既存の値を返す。 || NULLを返す。 || エラーを出力して終了する。 | |||
|- | |||
| ${変数名:+文字列} || "文字列"を返す。 || NULLを返す。 || NULLを返す。 | |||
|- | |||
| ${変数名+文字列} || "文字列"を返す。 || "文字列"を返す。 || NULLを返す。 | |||
|} | |||
</center> | |||
<br> | |||
以下に、接尾語および接頭語を示す。<br> | |||
<syntaxhighlight lang="sh"> | |||
#!/usr/bin/env bash | |||
hoge="${HOME}/hoge/bake/file.c" | |||
echo 'original' | |||
echo $hoge | |||
echo '' | |||
echo '${parameter%word}' | |||
echo ${hoge%.c}.o | |||
echo '' | |||
echo '${parameter%%word}' | |||
echo ${hoge%%file.c}new_file.o | |||
echo '' | |||
echo '${parameter#word}' | |||
echo ${hoge#$HOME} | |||
echo '' | |||
echo '${parameter##word}' | |||
echo ${hoge##*/} | |||
</syntaxhighlight> | |||
<br> | |||
# 出力 | |||
original | |||
/Users/yasui/hoge/bake/file.c | |||
${parameter%word} | |||
/Users/yasui/hoge/bake/file.o | |||
${parameter%%word} | |||
/Users/yasui/hoge/bake/new_file.o | |||
${parameter#word} | |||
/hoge/bake/file.c | |||
${parameter##word} | |||
file.c | |||
<br><br> | <br><br> | ||