13,183
回編集
(→環境変数) |
細 (文字列「</source>」を「</syntaxhighlight>」に置換) |
||
| 12行目: | 12行目: | ||
echo "Hello $name" # ダブルクォーテーションは変数を展開する | echo "Hello $name" # ダブルクォーテーションは変数を展開する | ||
echo 'Hello $name' # シングルクォーテーションは変数を展開しない | echo 'Hello $name' # シングルクォーテーションは変数を展開しない | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
# 出力 | # 出力 | ||
| 24行目: | 24行目: | ||
echo "Hello $name !" | echo "Hello $name !" | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
# 出力 | # 出力 | ||
| 45行目: | 45行目: | ||
echo "${LANG#*.}" # (2) .文字までを削除 | echo "${LANG#*.}" # (2) .文字までを削除 | ||
echo "${LANG%.*}" # (3) .文字以降を削除 | echo "${LANG%.*}" # (3) .文字以降を削除 | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
# 出力 | # 出力 | ||
| 80行目: | 80行目: | ||
readonly -a arr # 配列arrをreadonlyにする | readonly -a arr # 配列arrをreadonlyにする | ||
readonly -f func # 関数funcをreadonlyにする | readonly -f func # 関数funcをreadonlyにする | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
以下のように、変数の定義と同時にreadonlyを指定することも可能である。<br> | 以下のように、変数の定義と同時にreadonlyを指定することも可能である。<br> | ||
<source lang="sh"> | <source lang="sh"> | ||
readonly USERNAME="Mike" | readonly USERNAME="Mike" | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
以下の例では、変数MAX_SIZEを100で初期化した後、200という値を代入しようとしている。<br> | 以下の例では、変数MAX_SIZEを100で初期化した後、200という値を代入しようとしている。<br> | ||
| 94行目: | 94行目: | ||
readonly MAX_SIZE=100 | readonly MAX_SIZE=100 | ||
MAX_SIZE=200 | MAX_SIZE=200 | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
# 出力 | # 出力 | ||
| 118行目: | 118行目: | ||
echo $NAME | echo $NAME | ||
fi | fi | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
==== 変数に値が代入されていないことを確認する ==== | ==== 変数に値が代入されていないことを確認する ==== | ||
| 128行目: | 128行目: | ||
echo 'NAME is not set' | echo 'NAME is not set' | ||
fi | fi | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
# 出力 | # 出力 | ||
| 143行目: | 143行目: | ||
let val=$val+200 | let val=$val+200 | ||
echo $val | echo $val | ||
</ | </syntaxhighlight> | ||
または | または | ||
<source lang="sh"> | <source lang="sh"> | ||
| 151行目: | 151行目: | ||
val=$(($val+200)) | val=$(($val+200)) | ||
echo $val | echo $val | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
# 出力 | # 出力 | ||
| 168行目: | 168行目: | ||
VALUE3=`expr "$str1" "+" "$str2"` | VALUE3=`expr "$str1" "+" "$str2"` | ||
echo "$VALUE3" | echo "$VALUE3" | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
# 出力 | # 出力 | ||
| 188行目: | 188行目: | ||
ANS=`echo $VALUE1*$VALUE2 | bc` | ANS=`echo $VALUE1*$VALUE2 | bc` | ||
echo $ANS | echo $ANS | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
下表に、<code>let</code>コマンドで使用できる演算子を示す。(四則演算は省略)<br> | 下表に、<code>let</code>コマンドで使用できる演算子を示す。(四則演算は省略)<br> | ||
| 249行目: | 249行目: | ||
echo $RANDOM | echo $RANDOM | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
# 出力 | # 出力 | ||
| 266行目: | 266行目: | ||
echo $STR | echo $STR | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
また、以下のように変数を{}で括る。<br> | また、以下のように変数を{}で括る。<br> | ||
| 276行目: | 276行目: | ||
echo $STR | echo $STR | ||
</ | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
| 304行目: | 304行目: | ||
FILES=$(ls) | FILES=$(ls) | ||
echo "$FILES" | echo "$FILES" | ||
</ | </syntaxhighlight> | ||
または<br> | または<br> | ||
<source lang="sh"> | <source lang="sh"> | ||
| 311行目: | 311行目: | ||
FILES=`ls` | FILES=`ls` | ||
echo "$FILES" | echo "$FILES" | ||
</ | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
| 412行目: | 412行目: | ||
# 出力 | # 出力 | ||
aaaBbbccc | aaaBbbccc | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
* パターンに一致する文字列を全て置換する。 | * パターンに一致する文字列を全て置換する。 | ||
| 423行目: | 423行目: | ||
# 出力 | # 出力 | ||
aaaBBBccc | aaaBBBccc | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
sedコマンドと同様の結果を、シェルスクリプトの機能だけで実現できていることがわかる。<br> | sedコマンドと同様の結果を、シェルスクリプトの機能だけで実現できていることがわかる。<br> | ||
| 429行目: | 429行目: | ||
X=aaabbbccc | X=aaabbbccc | ||
Y=$(echo $X | sed -e 's/bbb/BBB/g') | Y=$(echo $X | sed -e 's/bbb/BBB/g') | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
* フルパスからbasenameを取り出す。 | * フルパスからbasenameを取り出す。 | ||
| 442行目: | 442行目: | ||
# 出力 | # 出力 | ||
ccc | ccc | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
また、basenameを取得する場合、一般的に、basenameコマンドを使用した方が簡単である。<br> | また、basenameを取得する場合、一般的に、basenameコマンドを使用した方が簡単である。<br> | ||
<source lang="sh"> | <source lang="sh"> | ||
basename $X | basename $X | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
* フルパスからdirnameを取り出す。 | * フルパスからdirnameを取り出す。 | ||
| 460行目: | 460行目: | ||
# 出力 | # 出力 | ||
/aaa/bbb | /aaa/bbb | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
また、ディレクトリ名を取得する場合、一般的に、dirnameコマンドを使用した方が簡単である。<br> | また、ディレクトリ名を取得する場合、一般的に、dirnameコマンドを使用した方が簡単である。<br> | ||
<source lang="sh"> | <source lang="sh"> | ||
dirname $X | dirname $X | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
* '#'以降のコメントを削除する。 | * '#'以降のコメントを削除する。 | ||
| 477行目: | 477行目: | ||
# 出力 | # 出力 | ||
aaa bbb | aaa bbb | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
==== 初期値 ==== | ==== 初期値 ==== | ||
| 513行目: | 513行目: | ||
# 出力 | # 出力 | ||
-bash: count: パラメータが null または設定されていません | -bash: count: パラメータが null または設定されていません | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
?の後ろに表示するメッセージを指定することもできる。<br> | ?の後ろに表示するメッセージを指定することもできる。<br> | ||
| 522行目: | 522行目: | ||
# 出力 | # 出力 | ||
-bash: count: パラメータが設定されていません | -bash: count: パラメータが設定されていません | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
* ${変数:+word} | * ${変数:+word} | ||
| 534行目: | 534行目: | ||
# 出力 | # 出力 | ||
1 | 1 | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
<source lang="sh"> | <source lang="sh"> | ||
| 544行目: | 544行目: | ||
# 出力 | # 出力 | ||
何も表示されない | 何も表示されない | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
==== 位置指定で部分文字列を抽出する ==== | ==== 位置指定で部分文字列を抽出する ==== | ||
| 565行目: | 565行目: | ||
# 出力 | # 出力 | ||
DEFGHIJ | DEFGHIJ | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
<source lang="sh"> | <source lang="sh"> | ||
| 574行目: | 574行目: | ||
# 出力 | # 出力 | ||
DEFG | DEFG | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
offsetやlength に負の値を指定して、末尾から文字列を抽出することもできる。<br> | offsetやlength に負の値を指定して、末尾から文字列を抽出することもできる。<br> | ||
| 585行目: | 585行目: | ||
# 出力 | # 出力 | ||
HIJ | HIJ | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
<source lang="sh> | <source lang="sh> | ||
| 594行目: | 594行目: | ||
# 出力 | # 出力 | ||
FGH | FGH | ||
</ | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:シェルスクリプト]] | [[カテゴリ:シェルスクリプト]] | ||