วิธีการเชื่อมสตริงตัวแปรเข้าด้วยกันเป็นหนึ่งในสาม


36

ฉันต้องการเชื่อมสองสายเข้าด้วยกันใน bash ดังนั้น:

string1=hello
string2=world

mystring=string1+string2

echo mystring ควรผลิต

สวัสดีชาวโลก


คำสั่งเทอร์มินัลjoinสามารถทำสิ่งนี้ให้คุณได้
LéoLéopold Hertz 준영

คำตอบ:



51

คุณไม่จำเป็นต้องใช้ {} เว้นแต่ว่าคุณจะใช้พารามิเตอร์ตัวแปร bash หรือเพิ่มอักขระที่จะใช้ได้ในฐานะส่วนหนึ่งของตัวระบุทันที คุณไม่จำเป็นต้องใช้เครื่องหมายคำพูดคู่เว้นแต่ว่าพารามิเตอร์ของคุณจะมีอักขระพิเศษ

x=foo
y=bar
z=$x$y        # $z is now "foobar"
z="$x$y"      # $z is still "foobar"
z="$xand$y"   # does not work
z="${x}and$y" # does work, "fooandbar"
z="$x and $y" # does work, "foo and bar"

2
นี่คือสิ่งที่ฉันกำลังมองหา [z = "$ xand $ y" # ไม่ทำงาน ..... z = "$ {x} และ $ y" # ใช้งานได้ "fooandbar"] ขอบคุณ
blokeish

18

ในกรณีที่คุณต้องการเชื่อมต่อตัวแปรกับสตริงตัวอักษร:

string1=hello
string2=world
mystring="some ${string1} arbitrary ${string2} text"

echo $mystring จะผลิต:

สวัสดีบางข้อความโลกโดยพลการ


6
คุณสามารถใช้${var}รูปแบบได้ตลอดเวลาที่คุณต้องการ แต่คุณต้องการเมื่อ$varจะตามด้วยอักขระชื่อตัวแปรอื่นที่ถูกต้องทันที ... เช่น: $vararbitaryจะแปลความหมายตัวแปรชื่อ "vararbitary" แต่คุณสามารถแก้ไขได้โดยใช้${var}arbitary.... อุ๊ปส์ฉันเพิ่งเห็นผู้ทำเคอร์เมอร์ .. แต่ฉันก็อาจแสดงความคิดเห็นได้ที่นี่
Peter.O

11

หากคุณต้องการเชื่อมต่อตัวแปรจำนวนมากคุณยังสามารถใช้+=เพื่อผนวกสตริง .. ซึ่งอาจเพิ่มความสามารถในการอ่าน ..

mystring=${string1}
mystring+=${string2}
mystring+=${string3}
mystring+=${string4}
echo ${mystring}

ตามที่กล่าวโดยคำตอบอื่น ๆ {} ไม่จำเป็นที่นี่ แต่ฉันมักจะใช้พวกเขาเพื่อหลีกเลี่ยงข้อผิดพลาดทางไวยากรณ์

+=array+=($b)นอกจากนี้ยังสามารถใช้ในการผนวกค่าอาร์เรย์:

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.