Lから始まるLinux

3章18話
exportコマンド
3章19話 envコマンド
もくじ
3章20話
パラメータ展開(基本)
env コマンド
若木 みどり
お兄ちゃん! 環境変数で変数を シェルスクリプトに 渡せるのはわかったけど シェルスクリプトをたくさん作ると 環境変数だらけになっちゃうよ! なんとかならないかな?
若木 しげる
今回はそんな問題を解決する env を説明するよ!
使い方
若木 しげる
env 指定された変数名の変数を コマンドに渡して実行するよ environment の略なんだ
env [オプション]... [変数名=値]... [コマンド]
若木 みどり
へぇ…環境変数でない普通の変数もコマンドに渡せるんだ!
若木 しげる
最近のシェルは env同等の機能を持っているよ単に変数を渡したいだけなら以下のように書けるんだ
変数名=値... コマンド
若木 みどり(驚き)
ただコマンドの前に変数を指定するだけでできるの?!
若木 しげる
できるかどうかは試してみよう!
実践
若木 しげる
前回みどりが改良したgreet スクリプトは以下のようなものだったね
#!/bin/bash

if [ -z "$NAME" ]
then
  echo -n "名前を入力して下さい: "
  read NAME
fi
echo "こんにちは、$NAMEさん!"
若木 みどり
うん!
若木 しげる
前回は実行するスクリプトにNAME 環境変数を渡していたけど今回は NAME 変数を渡してみよう!
NAME=みどり ./greet
若木 みどり
本当に NAME 変数が渡っていればその値が使われるはずだけど…
こんにちは、みどりさん!
若木 みどり(驚き)
おお!期待どおりに動くね!
確認
若木 しげる
env を引数なしで実行すると宣言されている変数一覧を表示するよ
env
若木 みどり
似たようなコマンドではおなじみの操作だね!
コマンド表示内容
readonly読み取り専用変数
export環境変数
env変数(上記も含む)
まとめ
若木 みどり
今回はコマンドに変数を渡す方法を学んだよ!変数名=値... コマンドと書くだけなんだ!
若木 しげる
一部のコマンドは変数で挙動を変えるよexport を使うと以降のコマンドにも影響があるので今回限りで変数を渡したい場合に便利な書き方なんだ