programing

Bash에서 ${}와 $()의 차이

codeshow 2023. 4. 12. 22:43
반응형

Bash에서 ${}와 $()의 차이

두 가지 질문이 있는데 이해하는데 도움이 필요합니다.

  1. 와의 차이는 무엇입니까?${}그리고.$()알고 있습니다.()명령어를 다른 셸에서 실행하여 배치하는 것을 의미합니다.$값을 변수에 전달하는 것을 의미합니다.누가 이걸 이해하는데 도와줄 수 있나요?제가 틀렸다면 정정해 주세요.

  2. 사용할 수 있다면for ((i=0;i<10;i++)); do echo $i; done잘 작동하는데 왜 이렇게 못 쓰죠?while ((i=0;i<10;i++)); do echo $i; done양쪽의 실행 사이클은 어떻게 다릅니까?

구문은 토큰 수준이기 때문에 달러 기호의 의미는 토큰에 따라 달라집니다.표현$(command)와의 현대적 동의어이다.`command`이것은 명령어 대체의 약자로, 실행(run)을 의미합니다.command여기에 출력을 넣습니다.그렇게

echo "Today is $(date). A fine day."

를 실행합니다.date명령어를 발행하여 그 출력을 인수에 포함시키다echo. 괄호는 명령어를 서브셸에서 실행하기 위한 구문과는 무관하지만 공통점을 가지고 있습니다(명령어 대체는 별도의 서브셸에서도 실행됩니다).

반대로${variable}명확화 메커니즘일 뿐이니까${var}text변수의 내용을 의미하는 경우var, 그 다음에text(과 반대로)$vartext그 말은 변수의 내용을 의미하고vartext).

whileloop은 true 또는 false로 평가되어야 하는 단일 인수(또는 실제로 다중 인수, 즉 마지막 인수의 true 값이 조사됩니다.Jonathan Leffler가 이것을 지적해 주셔서 감사합니다)를 예측합니다.false일 경우 루프는 실행되지 않습니다.forloop은 항목 목록을 반복하고 각 항목을 루프 변수에 차례로 바인드합니다.참조하는 구문은 산술값의 범위에 걸쳐 루프를 표현하는 하나의(일반화된) 방법입니다.

A for이와 같은 루프는 로 바꿔 말할 수 있다whileloop. 표현은

for ((init; check; step)); do
    body
done

와 동등하다

init
while check; do
    body
    step
done

읽기 쉽도록 모든 루프 제어를 한 곳에 보관하는 것이 좋습니다.단, 이렇게 표현하면 알 수 있듯이for루프가 하는 동작은 Roop보다while고리.

물론 이 구문은 Bash에 따라 다릅니다.클래식 Bourne 쉘은

for variable in token1 token2 ...; do

더 더 우아하게, 더, 더 우아하게, 더 우아하게.echo""가 되어 있지 않은 를 지정합니다.%맷맷: :

date +'Today is %c. A fine day.'

이 고립된 예에서는 큰 차이가 없지만 가능한 프로세스를 피하는 것이 중요합니다.)

  1. $()의미: "먼저 이 값을 평가하고 나머지 라인을 평가합니다."

    예:

    echo $(pwd)/myFile.txt
    

    로 해석될 것이다.

    echo /my/path/myFile.txt
    

    ★★★★★★★★★★★★★★★★.${}변수를 확장합니다.

    예:

    MY_VAR=toto
    echo ${MY_VAR}/myFile.txt
    

    로 해석될 것이다.

    echo toto/myFile.txt
    
  2. 을 왜로 사용할?bash$ while ((i=0;i<10;i++)); do echo $i; done

    은 "bash"의 while '아니다'의 구문이 '아니다'의 구문과 .for.

  1. 당신의 이해는 옳습니다.{}에 대한 자세한 내용은 bash ref - 매개 변수 확장을 참조하십시오.

  2. 'for'와 'while'은 구문이 다르며 반복에 대해 서로 다른 스타일의 프로그래머 제어를 제공합니다.대부분의 비 ASM 언어도 유사한 구문을 제공합니다.

에 아마 수 있을 거예요.i=0; while [ $i -lt 10 ]; do echo $i; i=$(( i + 1 )); done으로 반복의 관리하다

언급URL : https://stackoverflow.com/questions/27472540/difference-between-and-in-bash

반응형