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

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

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

这是如何在Bash中实现的?


当前回答

bla=hello
laber=kthx
echo "${bla}ohai${laber}bye"

将输出

helloohaikthxbye

当$blaohai美元导致变量未找到错误。或者如果字符串中有空格或其他特殊字符。“${foo}”正确地转义您放入其中的任何内容。

其他回答

Bash还支持一个+=运算符,如以下代码所示:

A="X Y"
A+=" Z"
echo "$A"

输出

X Y Z轴

您可以在没有引号的情况下进行连接。下面是一个示例:

$Variable1 Open
$Variable2 Systems
$Variable3 $Variable1$Variable2
$echo $Variable3

最后一条语句将打印“OpenSystems”(不带引号)。

这是Bash脚本的示例:

v1=hello
v2=world
v3="$v1       $v2"
echo $v3            # Output: hello world
echo "$v3"          # Output: hello       world

这是通过AWK的:

$ foo="Hello"
$ foo=$(awk -v var=$foo 'BEGIN{print var" World"}')
$ echo $foo
Hello World

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

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

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

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