LoginSignup
75
68

More than 5 years have passed since last update.

bashで変数を宣言する

Posted at

はじめに

bashのビルトインコマンドのdeclareを使って変数を宣言する方法を記述します。

変数の型を指定したり、デバッグで使用できたり。
大文字、小文字を変換するなど、変わった機能もあります。

環境

  • Amazon Linux AMI release 2014.03
  • bash 4.1.2

変数を宣言する

  • 変数を数値として宣言する

iオプションを使用します。

declare -i num=1+2
str=1+2

echo $num # => 3
echo $str # => 1+2
  • 変数を配列として宣言する

aオプションを使用します。

declare -a array=( Java Ruby Python )

echo ${array[0]} # => Java

echo ${#array[*]} #=> 3(配列の要素数)

for e in ${array[*]}
do
  echo $e # => Java, Ruby, Pythonの順に出力
done

for i in ${!array{*}}
do
  echo ${array[i]} # => Java, Ruby, Pythonの順位出力
done

  • 変数を連想配列として宣言する

Aオプションを使用します。

declare -A hash=([Jack]=11 [Queen]=12 [King]=13)

echo ${hash['King']} # => 13

for v in ${hash[*]}
do
  echo $v # => Jack, Queen, King(順序は任意)
done

for k in ${!hash[*]}
do
  echo "$k:${hash[$k]}" # => Jack:11, Queen:12, King:13(順序は任意)
done
  • 読み込み専用の変数とする

rオプションを指定します。

declare -r ro_var='readonly variable'

echo $ro_var # => readonly variable

ro_var='writable?' # => エラーになる
  • 環境変数としてエクスポートする

xオプションを使用します。

declare -x env_var='environmental variables'
export -p | grep env_var # => export env_var="environmental variables"

export -p | grep TZ # => (出力なし)
date # => Wed Sep  3 15:14:37 UTC 2014

declare -x TZ='Asia/Tokyo'
export -p | grep TZ # => export TZ="Asia/Tokyo"
date # => Thu Sep  4 00:14:37 JST 2014
  • 変数の内容を出力する

pオプションを使用します。

declare -i num=1+2
declare -a array=(Java Ruby Python)
declare -A hash=([Jack]=11 [Queen]=12 [King]=13)
var='Hello, World!'

declare -p num # => declare -i num="3"
declare -p array # => declare -a array='([0]="Java" [1]="Ruby" [2]="Python")'
declare -p hash # => declare -A hash='([Jack]="11" [King]="13" [Queen]="12" )'
declare -p var # => declare -- var="Hello, World!"
  • 変数を大文字へ変換する

uオプションを使用します。

declare -u upper_var='hello, world!'
echo $upper_var # => HELLO, WORLD!
  • 変数を小文字へ変換する
declare -l lower_var='HELLO, WORLD!'
echo $lower_var # => hello, world!

参考

75
68
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
75
68