Bash에서 $ {}와 $ ()의 차이점
두 가지 질문이 있으며이를 이해하는 데 도움이 될 수 있습니다.
${}
과 의 차이점은 무엇입니까$()
? 나는()
별도의 셸에서 명령을 실행하고 배치$
하는 것은 값을 변수에 전달하는 것을 의미 한다는 것을 이해 합니다. 누군가 이것을 이해하는 데 도움을 줄 수 있습니까? 내가 틀렸다면 나를 바로 잡으십시오.우리가 사용할 수
for ((i=0;i<10;i++)); do echo $i; done
있고 잘 작동한다면 왜 나는 그것을 사용할 수while ((i=0;i<10;i++)); do echo $i; done
없습니까? 둘 다 실행주기의 차이점은 무엇입니까?
구문은 토큰 수준이므로 달러 기호의 의미는 포함 된 토큰에 따라 다릅니다. 표현식 $(command)
은 `command`
명령 대체를 나타내는 현대 동의어입니다 . 즉, 실행 command
하고 여기에 출력을 넣습니다. 그래서
echo "Today is $(date). A fine day."
date
명령 을 실행하고 에 대한 인수에 출력을 포함합니다 echo
. 괄호는 공통점이 있지만 하위 쉘에서 명령을 실행하는 구문과 관련이 없습니다 (명령 대체는 별도의 하위 쉘에서도 실행 됨).
대조적으로, ${variable}
는 모호함을 없애기위한 메커니즘 일 뿐이므로 ${var}text
변수의 내용을 의미 할 때 변수의 내용이 var
뒤 따릅니다 text
( $vartext
이는 변수의 내용을 의미하는 것과 반대로 vartext
).
while
루프는 true 또는 false로 평가해야 하나의 인자 예상 (또는 마지막 하나의 진리 값이 조사되는 경우, 실제로 여러 -이 아웃을 가리키는 주셔서 감사합니다 조나단 레플러를); 거짓이면 루프가 더 이상 실행되지 않습니다. for
루프 아이템 귀속 차례로 루프 변수로 각각의리스트 반복 할; 참조하는 구문은 산술 값 범위에 대해 루프를 표현하는 하나의 일반적인 방법입니다.
이와 for
같은 루프는 while
루프 로 다시 표현할 수 있습니다 . 표현식
for ((init; check; step)); do
body
done
다음과 같다
init
while check; do
body
step
done
가독성을 위해 모든 루프 제어를 한곳에 보관하는 것이 좋습니다. 하지만 이렇게 표현할 때 보시 for
다시피 루프는 루프보다 훨씬 더 많은 역할을합니다 while
.
물론이 구문은 Bash와 관련이 있습니다. 고전적인 Bourne 쉘은
for variable in token1 token2 ...; do
(좀 더 우아하게, echo
인수 문자열에 %
형식 코드가 포함되어 있지 않다고 확신하는 한 첫 번째 예제에서를 피할 수 있습니다.
date +'Today is %c. A fine day.'
이 격리 된 예제에서 많은 차이를 만들지는 않지만 가능한 프로세스를 피하는 것은 학습에 중요한 고려 사항입니다.)
$()
의미 : "먼저 이것을 평가 한 다음 나머지 줄을 평가"합니다.예 :
echo $(pwd)/myFile.txt
다음과 같이 해석됩니다.
echo /my/path/myFile.txt
반면
${}
에 변수를 확장합니다.전의:
MY_VAR=toto echo ${MY_VAR}/myFile.txt
다음과 같이 해석됩니다.
echo toto/myFile.txt
-
왜 그것을 사용할 수 없습니까?
bash$ while ((i=0;i<10;i++)); do echo $i; done
대답은 bash 구문
while
이의 구문과 동일하지 않다는 것입니다for
.
당신의 이해가 옳습니다. {}에 대한 자세한 정보는 bash ref-매개 변수 확장을 참조하십시오.
'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
'Programing' 카테고리의 다른 글
Facebook 액세스 토큰이 여전히 유효한지 확인하는 방법이 있습니까? (0) | 2020.10.29 |
---|---|
CancellationToken의 기본 매개 변수 (0) | 2020.10.29 |
'dict'개체에 'has_key'속성이 없습니다. (0) | 2020.10.29 |
사용자가 이미 Firebase에 로그인했는지 어떻게 감지하나요? (0) | 2020.10.29 |
Scala에서 매핑 할 케이스 클래스 (0) | 2020.10.29 |