在PHP中,字符串按如下方式连接在一起:

$foo = "Hello";
$foo .= " World";

在这里,$foo变成了“Hello World”。

这是如何在Bash中实现的?


当前回答

我想从列表中创建一个字符串。找不到答案,所以我把它贴在这里。以下是我所做的:

list=(1 2 3 4 5)
string=''

for elm in "${list[@]}"; do
    string="${string} ${elm}"
done

echo ${string}

然后得到以下输出:

1 2 3 4 5

其他回答

即使现在允许使用+=运算符,它也已在2004年的Bash 3.1中引入。

如果幸运的话,在较旧的Bash版本上使用此运算符的任何脚本都将失败,并显示“命令未找到”错误,或“语法错误接近意外标记”。

对于那些关心向后兼容性的人,请使用较旧的标准Bash连接方法,如所选答案中提到的方法:

foo="Hello"
foo="$foo World"
echo $foo
> Hello World

你也可以这样做:

$ var="myscript"

$ echo $var

myscript


$ var=${var}.sh

$ echo $var

myscript.sh

我更喜欢使用花括号${}来扩展字符串中的变量:

foo="Hello"
foo="${foo} World"
echo $foo
> Hello World

卷曲括号将适合连续字符串用法:

foo="Hello"
foo="${foo}World"
echo $foo
> HelloWorld

否则,使用foo=“$fooWorld”将不起作用。

更安全的方式:

a="AAAAAAAAAAAA"
b="BBBBBBBBBBBB"
c="CCCCCCCCCCCC"
d="DD DD"
s="${a}${b}${c}${d}"
echo "$s"
AAAAAAAAAAAABBBBBBBBBBBBCCCCCCCCCCCCDD DD

包含空格的字符串可以成为命令的一部分,请使用“$XXX”和“${XXX}”来避免这些错误。

再看看其他关于+=

a="Hello,"
a=$a" World!"
echo $a

这是连接两个字符串的方式。