「シェルスクリプトの基礎 - 変数」の版間の差分

ナビゲーションに移動 検索に移動
(文字列「<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>


案内メニュー