업데이트하려는 오래된 스크립트가 있습니다. 일부 코드는 다음과 같이 요약됩니다.
export X=`(echo "abc"; echo "def")`
echo $X
예상 출력을 제공합니다.
abc def
이제 인터넷에서 백틱이 나왔다 $()
는 것을 알 필요가 있지만 시도 할 때 :
export X=$((echo "abc"; echo "def"))
X
설정되어 있지 않고 오류가 발생합니다.
bash: echo "abc"; echo "def": syntax error: invalid arithmetic operator (error token is ""abc"; echo "def"")
내가 도대체 뭘 잘못하고있는 겁니까?
답변
$(( … ))
구문은 인 연산 식 .
누락 된 것은 산술 표현식 구문을 피하기 위해 $(
와 다음 사이의 공백 (
입니다.
쉘 명령 언어 스펙에서 명령 대체 에 관한 섹션은 실제로 다음을 경고합니다.
If the command substitution consists of a single subshell, such as:
$( (command) )
a conforming application shall separate the "`$(`" and '`(`' into two tokens
(that is, separate them with white space). This is required to avoid any
ambiguities with arithmetic expansion.
답변
시험
export X="$(echo "abc"; echo "def")"