Bash 명령의 출력을 변수에 할당하는 방법은 무엇입니까?
의 내용을 입력하는 데 문제가 있습니다.pwd
나중에 사용할 셸 변수로 명령합니다.
다음은 셸 코드입니다(루프가 멈추지 않음).
#!/bin/bash
pwd= `pwd`
until [ $pwd = "/" ]
do
echo $pwd
ls && cd .. && ls
$pwd= `pwd`
done
제 실수를 발견해 주시겠습니까?
시도:
pwd=`pwd`
또는
pwd=$(pwd)
등호 뒤에는 공백이 없습니다.
또한 와이스 씨가 지적했듯이, 당신은 할당하지 않습니다.$pwd
당신이 할당한pwd
.
셸에서 달러 기호가 없는 변수에 할당합니다.
TEST=`pwd`
echo $TEST
더 낫지만(내스트될 수도 있음) 백틱스만큼 이식성이 높지 않습니다.
TEST=$(pwd)
echo $TEST
항상 기억하세요: 달러 기호는 변수를 읽을 때만 사용됩니다.
이 특정한 경우 bash에는 현재 디렉터리를 포함하는 변수가 있습니다.$PWD
와 동등합니다.`pwd`
(다른 셸도 마찬가지입니다. 이것은 표준 기능입니다.)따라서 스크립트를 다음과 같이 작성할 수 있습니다.
#!/bin/bash
until [ "$PWD" = "/" ]; do
echo "$PWD"
ls && cd .. && ls
done
변수 참조 주위에 큰따옴표를 사용합니다.변수(여기서 현재 디렉터리)에 공백 또는 와일드카드가 포함된 경우 필요합니다.\[?*
), 셸이 변수 확장의 결과를 단어로 나누고 이러한 단어에 대해 글로빙을 수행하기 때문입니다.변수 확장 및 명령 대체는 반드시 이중 따옴표로 묶어야 합니다(반드시 그럴 필요가 없음을 특별히 알지 않는 한).
일반적인 경우, 다른 답변에서 이미 언급한 것처럼 다음과 같습니다.
- 할당에서 동일한 기호 주위에 공백을 사용할 수 없습니다.
var=value
,것은 아니다.var = value
- 그
$
는 "이 변수의 값을 취함"을 의미하므로 다음을 할당할 때 사용하지 않습니다.var=value
,것은 아니다.$var=value
위의 예제를 정리하기 위해 훨씬 더 복잡한 명령을 수행할 수도 있습니다.시스템에서 실행 중인 프로세스 수를 가져와서 ${Num_PROCS} 변수에 저장하고 싶다고 가정합니다.
명령 파이프라인을 생성하고 출력(프로세스 수)을 변수에 입력하기만 하면 됩니다.
다음과 같습니다.
NUM_PROCS=$(ps -e | sed 1d | wc -l)
저는 그것이 이 토론에 유용한 정보를 추가하는 데 도움이 되기를 바랍니다.
여기 대본이...
DIR=$(pwd)
echo $DIR
while [ "$DIR" != "/" ]; do
cd ..
DIR=$(pwd)
echo $DIR
done
공백, 따옴표 사용 및 $ 기호를 기록합니다.
언급URL : https://stackoverflow.com/questions/2314750/how-to-assign-the-output-of-a-bash-command-to-a-variable
'programing' 카테고리의 다른 글
Swift에서 빈 문자열을 확인하시겠습니까? (0) | 2023.05.06 |
---|---|
C# 목록을 사전으로 변환 (0) | 2023.05.06 |
효율적인 페이징 구현 방법 (0) | 2023.05.06 |
Xcode iOS 8 키보드 유형이 지원되지 않음 (0) | 2023.05.06 |
AVAudio Recorder를 사용하여 iPhone에서 오디오를 녹음하려면 어떻게 해야 합니까? (0) | 2023.05.06 |