함수에 전달된 변수 이름 확인

함수에 전달된 변수 이름 확인

변수를 위치 인수로 함수에 전달하는 경우 함수 내에서 사용되는 변수의 이름을 확인할 수 있습니까, 아니면 해당 값에만 액세스할 수 있습니까?

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 매뉴얼 페이지를 확인하고 "매개변수 확장"을 검색하세요.

관련 정보