変数を定義する
変数に値を代入するには、変数名と値をイコール=
で結びます。イコールの前後にはスペースは入れられません。
<variable>=<parameter>
$ MESSAGE=Hello-World
コマンドの実行結果を変数に代入する
コマンド置換(Command Substitution)を使います。
<variable>=$(command)
<varibale>=`command`
実行したいコマンドを$( )
もしくはバッククオートで囲みます。
変数を参照する
変数を参照するには、変数名の前に$
をつけます。また、変数名は中括弧{ }
で囲うことが出来ます。中括弧を付けることで可読性が良くなります。
$<variable>
${<variable>}
変数と文字列を結合する
変数と文字列を結合する場合、変数名の後にスペースが無いと、別の変数を参照してしまいます。これを防ぐために、変数名を中括弧{ }
で囲います。
$ hoge=Hello
$ echo ${hoge}_World
Hello_World
特殊変数
引数の取得や、終了ステータスの取得には、特殊変数を使用します。
パラメータ名 | 意味 |
---|---|
$0 | シェルスクリプトのファイル名 |
$1 ~ $9, ${10}~ | シェルのN番目の引数 |
$* | シェルの全ての引数 |
$@ | シェルの全ての引数 |
$# | 実行時に指定されたシェルの引数の個数 |
$$ | コマンドのプロセスID |
$? | 直前に実行したコマンドの終了ステータス |
$! | 直前に実行したバックグラウンドコマンドの終了ステータス |
$- | シェルの実行オプション |
環境変数
.env
ファイル
.env
ファイルは、プロジェクトのルートに設置するファイル。
環境変数の設定
export
コマンドを使って、環境変数を作成したり、変数を設定します。
export BIOSCREPTOME_HOME=/opt/home
環境変数を表示する
printenv
もしくはenv
コマンドを使用することで、環境変数の一覧を取得できます。
環境変数を削除する
unset
コマンドで、環境変数を削除できます。
Secret Managerを利用する
- Infisical | Open Source SecretOps
- Teller - open source universal secret manager for developers
- Vault by HashiCorp
環境変数の管理に有用なツール
- direnv: カレントディレクトリに応じて、環境変数をロード・アンロードできるツール
- quickenv:
direnv
の代替。シェルをフックしないらしい。 - Onboardbase · Open and collaborative secret infrastructure