関数に渡された変数名の解決

関数に渡された変数名の解決

変数を位置引数として関数に渡す場合、関数内で使用される変数の名前を確認できますか、それともその値にのみアクセスできますか?

envir-export環境変数を定義し、それを特別な環境ファイルに保存してから、その環境変数を取得する関数があります。

envir-export ()
 {
  nm="$1"
  vl="$2"
     
  envirs_trkrc="${HOME}/Opstk/envirs"
  echo "export ${nm}=${vl}" >> ${envirs_trkrc}/envirs.rc

  source ${envirs_trkrc}/envirs.rc
  echo "$nm exported with value $vl"
 }

現在、次の通貨を使用しています

envir-export VERBOS 8

VERBOS値のある名前を使用してください8

利便性と機能性の両方でこの機能を改善したいと思います。

たとえば、値が指定されていない場合は、値が割り当てられた名前のみがエクスポートされます。

ベストアンサー1

これを達成する一般的な方法は、次のことを行うことです。

function envir-export () {
  name="${1%%=*}"
  value="${1##*=}"
  echo 'the name is '"$name"
  echo 'the value is '"$value"
}

envir-export VERBOS=8



$ function f () { name="${1%%=*}" ; value="${1##*=}" ; echo name "$name" ; echo value "$value" ; } ; f VERBOS=8
name VERBOS
value 8
$

入力を名前と値に分割する方法については、bashのマニュアルページを確認して「パラメータ拡張」を検索してください。

おすすめ記事