「シェルスクリプトの基礎 - 変数」の版間の差分
ナビゲーションに移動
検索に移動
(→文字列の連結) |
|||
| 148行目: | 148行目: | ||
== コマンドの実行結果を変数に代入する == | == コマンドの実行結果を変数に代入する == | ||
<code>ls</code>、<code>grep</code>、<code>find</code>等のコマンドの実行結果を変数に代入するには、以下のように記述する。<br> | |||
変数=$(コマンド) | 変数=$(コマンド) | ||
または | |||
変数=`コマンド` | |||
<br> | <br> | ||
以下の例では、lsコマンドの実行結果を変数FILESに代入して、echoで出力している。<br> | |||
#!/bin/ | <source lang="sh"> | ||
#!/bin/sh | |||
FILES=$(ls) | |||
echo "$ | echo "$FILES" | ||
</source> | |||
または<br> | |||
<source lang="sh"> | |||
#!/bin/sh | |||
FILES=`ls` | |||
echo "$FILES" | |||
</source> | |||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:シェルスクリプト]] | [[カテゴリ:シェルスクリプト]] | ||
2020年9月28日 (月) 04:48時点における版
概要
変数の定義と参照
変数へ値を代入する時は$を付けず、変数を参照するときは$を付ける。
#!/bin/sh
name=Michael # 変数の定義
echo Hello $name # 変数の参照
echo "Hello $name" # ダブルクォーテーションは変数を展開する
echo 'Hello $name' # シングルクォーテーションは変数を展開しない
# 出力 Hello Michael Hello Michael Hello $name
未定義の変数を参照すると、空文字列と同様に扱われる。(エラーにはならない)
#!/bin/sh
echo "Hello $name !"
# 出力 Hello !
定数
以下のように実行すると、指定した変数や関数に対する代入、unsetができなくなる。
readonly var # 変数varをreadonlyにする
readonly -a arr # 配列arrをreadonlyにする
readonly -f func # 関数funcをreadonlyにする
以下のように、変数の定義と同時にreadonlyを指定することも可能である。
readonly USERNAME="Mike"
以下の例では、変数MAX_SIZEを100で初期化した後、200という値を代入しようとしている。
変数MAX_SIZEは定数化されているので、代入しようとした場合はエラーになる。
#!/bin/bash
readonly MAX_SIZE=100
MAX_SIZE=200
# 出力 ./sample.sh: 行 4: MAX_SIZE: 読み取り専用の変数です
変数の値の確認
testや[ ... ]で使用できる演算子には、以下のようなものがある。
- -z 文字列
- 文字列の長さが0の場合に真
- -n 文字列
- 文字列の長さが0でない場合に真
変数名にダブルクォーテーションを付けて値を展開して、上記の演算子でその文字列の長さをチェックすることにより、
変数に値が代入されている(または、代入されていない)ことを確認することができる。
変数に値が代入されていることを確認する
以下の例では、変数NAMEの値がセットされているか調べている。
#!/bin/bash
if [ -n "$NAME" ]; then
echo $NAME
fi
変数に値が代入されていないことを確認する
以下の例では、変数NAMEの値がセットされていないか調べている。
#!/bin/bash
if [ -z "$NAME" ]; then
echo 'NAME is not set'
fi
# 出力 NAME is not set
数値の演算
加算 / 減算
変数の値に対して、加算および減算を行うには以下のように記述する。
#!/bin/bash
val=100
let val=$val+200
echo $val
または
#!/bin/bash
val=100
val=$(($val+200))
echo $val
# 出力 300
ランダムな数値の取得
Bashのシェル変数$RANDOMを参照すると、0~32767の範囲のランダムな整数を取得することができる。
#!/bin/bash
echo $RANDOM
# 出力 27591
文字列の連結
複数の変数を連結するには、以下のように続けて記述する。
#!/bin/sh
STR1="Shell script"
STR2="is intersting!"
STR=$STR1$STR2
echo $STR
また、以下のように変数を{}で括る。
#!/bin/sh
STR1="Shell script"
STR="${STR1} is intersting!!"
echo $STR
コマンドの実行結果を変数に代入する
ls、grep、find等のコマンドの実行結果を変数に代入するには、以下のように記述する。
変数=$(コマンド) または 変数=`コマンド`
以下の例では、lsコマンドの実行結果を変数FILESに代入して、echoで出力している。
#!/bin/sh
FILES=$(ls)
echo "$FILES"
または
#!/bin/sh
FILES=`ls`
echo "$FILES"