programing

Bash 명령의 출력을 변수에 할당하는 방법은 무엇입니까?

muds 2023. 5. 6. 16:45
반응형

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

반응형