個人的勉強メモ置き場

プログラミングど素人のメモ置き場

シェル変数と環境変数

シェル変数

多くのプログラミング言語と同じくbashでも変数が使える
変数の作成は「変数名=値」で行う

$ directory=/home/zykb

他のプログラミング言語と違う点として、=記号の左右にスペースやタブを入れてはいけない

$ directory = home/zykb
directory: command not found

bashにおいては変数の値はデフォルトで文字列として扱われるので' 'や" "で囲む必要はない
ただし、スペースやタブを含めて文字列として扱いたい場合には' 'または" "で囲む

file='Document files'


変数の参照には変数名の前に$をつける

$ directory = home/zykb
$ echo $directory
home/zykb

変数部分を明示的に指定するには{ }で囲む

$ item=pen
$ echo I have many ${item}s
I have many pens


シェル変数はそのシェル内でのみ有効で、変数を引き継ぐことが出来ない

CLI

$ hello='I am zykb'

hello.sh

#!/bin/sh
echo ${hello}

なにも表示されない
CLI

$ ./hello.sh

シェルからコマンドを実行すると、現在のシェルから子プロセスが作成される。このときシェル変数は引き継がれないためなにも表示されなかった。
一方で環境変数は引き継がれるため、コマンドから参照できる
f:id:zykb:20220403010024p:plain

環境変数を作成するためにはexportコマンドを使用する

CLI

$ HELLO='I am zykb'
$ export HELLO

hello.sh

#!/bin/sh
echo ${HELLO}

CLI

$ ./hello.sh
I am zykb

環境変数は慣習として大文字を使う