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
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
Câu trả lời:
chỉ cần nối các biến:
mystring="$string1$string2"
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"
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
${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ụ: $vararbitary
sẽ 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.
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)
.
join
cũng có thể làm điều đó cho bạn.