ฉันมีสคริปต์เก่าที่ฉันพยายามอัปเดต บางส่วนของรหัสควบแน่นไปที่:
export X=`(echo "abc"; echo "def")`
echo $X
ซึ่งให้ผลลัพธ์ที่คาดหวัง:
abc def
ตอนนี้อินเทอร์เน็ตบอกฉันว่า backticks ออกมา$()เป็นสิ่งที่ฉันต้องการใช้ แต่เมื่อฉันลอง:
export X=$((echo "abc"; echo "def"))
X ไม่ได้ตั้งค่าและฉันได้รับข้อผิดพลาด:
bash: echo "abc"; echo "def": syntax error: invalid arithmetic operator (error token is ""abc"; echo "def"")
ผมทำอะไรผิดหรือเปล่า?
`...`และ$(...)เริ่ม subshell ต่อไปดังนั้นจึง(...)ไม่จำเป็นต้องใช้ส่วนใน (เสียกระบวนการ) คุณต้องการพื้นที่ในสิ่งต่าง ๆ เช่น$( (...); (...) )(ซึ่งอาจจำเป็นต้องใช้ subshells ภายใน)