Làm thế nào để nối các biến chuỗi thành một phần ba?


36

Tôi cần nối hai chuỗi trong bash, để:

string1=hello
string2=world

mystring=string1+string2

echo mystring nên sản xuất

Chào thế giới


Lệnh Terminal joincũng có thể làm điều đó cho bạn.
Léo Léopold Hertz

Câu trả lời:



51

Bạn không cần sử dụng {} trừ khi bạn sẽ sử dụng các tham số biến bash hoặc nối ngay một ký tự có thể là hợp lệ như một phần của mã định danh. Bạn cũng không cần sử dụng dấu ngoặc kép trừ khi các tham số của bạn sẽ bao gồm các ký tự đặc biệt.

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
Đây là những gì tôi đang tìm kiếm [z = "$ xand $ y" # không hoạt động ..... z = "$ {x} và $ y" # không hoạt động, "fooandbar"]. Cảm ơn.
blokeish

18

Trong trường hợp bạn cần nối các biến với các chuỗi bằng chữ:

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

echo $mystring sẽ sản xuất:

một số văn bản thế giới xin chào


6
Bạn có thể sử dụng ${var}định dạng bất cứ lúc nào bạn muốn, nhưng bạn chỉ cần nó khi $varđược ngay lập tức theo sau bởi một ký tự tên biến hợp lệ khác ... ví dụ: $vararbitarysẽ diễn giải một biến có tên là "biến thể", nhưng bạn có thể khắc phục bằng cách sử dụng ${var}arbitary.... ôi, tôi chỉ thấy người bỏ cuộc của khamer .. nhưng tôi cũng có thể để lại nhận xét ở đây.
Peter.O

11

Nếu bạn muốn nối nhiều biến, bạn cũng có thể sử dụng +=để nối các chuỗi .. Điều này có thể làm tăng khả năng đọc ..

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

Như đã đề cập bởi các câu trả lời khác, {} không cần thiết ở đây nhưng cá nhân tôi luôn sử dụng chúng để tránh một số lỗi cú pháp.

+=cũng có thể được sử dụng để nối các giá trị vào mảng : array+=($b).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.