Linux bash: 다중 변수 할당
Linux bash에는 PHP의 다음 코드와 유사한 것이 있습니다.
list($var1, $var2, $var3) = function_that_returns_a_three_element_array() ;
즉, 한 문장에서 세 가지 변수에 해당하는 값을 할당합니다.
bash 기능이 있다고 칩시다.myBashFuntionstdout 문자열 "qwert asdfg zxcvb"에 씁니다.다음과 같은 작업을 수행할 수 있습니까?
(var1 var2 var3) = ( `myBashFuntion param1 param2` )
등호 왼쪽에 있는 부분은 물론 유효한 구문이 아닙니다.난 그저 내가 원하는 걸 설명하려는 거야
다만, 기능하는 것은 다음과 같습니다.
array = ( `myBashFuntion param1 param2` )
echo ${array[0]} ${array[1]} ${array[2]}
그러나 인덱스 배열은 일반 변수 이름만큼 설명적이지 않습니다.
하지만, 나는 할 수 있었다:
var1 = ${array[0]} ; var2 = ${array[1]} ; var3 = ${array[2]}
하지만 그건 피하고 싶은 세 가지 진술입니다.
간단한 구문을 찾고 있습니다.가능합니까?
제일 먼저 떠오르는 건
read -r a b c <<<$(echo 1 2 3) ; echo "$a|$b|$c"
당연히 출력은
1|2|3
값을 배열에 할당하려고 했습니다.Michael Krelin의 접근방식을 확장하여 다음과 같이 했습니다.
read a[{1..3}] <<< $(echo 2 4 6); echo "${a[1]}|${a[2]}|${a[3]}"
그 결과:
2|4|6
역시나
이게 도움이 될 것 같은데...
스크립트에서 사용자가 입력한 날짜(mm/dd/yyy)를 분석하기 위해 일, 월 및 년을 배열에 저장한 후 다음과 같이 값을 다른 변수에 넣습니다.
DATE_ARRAY=(`echo $2 | sed -e 's/\// /g'`)
MONTH=(`echo ${DATE_ARRAY[0]}`)
DAY=(`echo ${DATE_ARRAY[1]}`)
YEAR=(`echo ${DATE_ARRAY[2]}`)
가끔은 뭔가 펑키한 걸 해야 할 때도 있어요.예를 들어 SDGuero의 날짜 예제에서 명령어를 읽고 싶지만 여러 개의 포크를 사용하지 않도록 합니다.
read month day year << DATE_COMMAND
$(date "+%m %d %Y")
DATE_COMMAND
echo $month $day $year
read 명령어에 파이프로 연결할 수도 있지만 하위 셸 내의 변수를 사용해야 합니다.
day=n/a; month=n/a; year=n/a
date "+%d %m %Y" | { read day month year ; echo $day $month $year; }
echo $day $month $year
결과...
13 08 2013
n/a n/a n/a
O'Reilly의 Bash Cookbook 5장에서는 '=' 기호 주위에 공백이 없어야 하는 변수 할당의 요구 이유를 (어느 정도 길게) 논의한다.
MYVAR="something"
이 설명은 명령 이름과 변수('='는 유효한 인수일 수 있음)를 구별하는 것과 관련이 있습니다.
이 모든 것이 이벤트 후에 정당화되는 것처럼 보이지만, 어떤 경우에도 변수 목록에 할당하는 방법에 대한 언급은 없습니다.
let var1=var2=var3=0
또는
var1=var2=var3="기본값"
언급URL : https://stackoverflow.com/questions/1952404/linux-bash-multiple-variable-assignment
'programing' 카테고리의 다른 글
| SQL Server에서 MONEY 또는 DECIMAL(x,y) 데이터 유형을 선택해야 합니까? (0) | 2023.04.14 |
|---|---|
| 목표 C: 여러 인수를 사용하여 셀렉터를 호출합니다. (0) | 2023.04.14 |
| SQL Server: 문자열 데이터 피벗 예시 (0) | 2023.04.14 |
| 실행 중인 Bash 스크립트의 경로를 확인합니다. (0) | 2023.04.14 |
| 뷰 모델의 컬렉션에 Collection Container를 바인딩하려면 어떻게 해야 합니까? (0) | 2023.04.14 |