カテゴリー
備忘録

zshで間接展開(indirect expansion)

引数処理をしたくてこちらの記事(https://chitoku.jp/programming/bash-getopts-long-options)を参考にさせて頂いてコードを書いてたときの話

bashで間接展開という(割と?)便利な記法がある

変数の値を変数名として展開するやつ.便利だなと思うんだけどこれを(da)sh,zshで実行するとエラーになる

いちいち使い分けるのは面倒なので全部のシェルで動くようにしたい...

zsh indirect expansionとかでググったら掲示板あったから調べたりドキュメント見た結果から分かったことを残しておこう.

zshでのみ有効な間接展開

まずはzshでのみ有効なやつ

!ではなく(P)を使うと行けるっぽい

(da)sh,zsh,bashで有効な間接展開

evalを使う

"\$"$src""という風にダブルクォートの中でダブルクォートしないとうまくいかない

確認

以下のコードを(da)sh,zsh,bashで実行

各シェルでの実行結果

sh
bash
zsh

evalを使うとどのシェルでも間接展開に対応できてることが分かる.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です