在PHP中,字符串按如下方式连接在一起:
$foo = "Hello";
$foo .= " World";
在这里,$foo变成了“Hello World”。
这是如何在Bash中实现的?
在PHP中,字符串按如下方式连接在一起:
$foo = "Hello";
$foo .= " World";
在这里,$foo变成了“Hello World”。
这是如何在Bash中实现的?
当前回答
即使现在允许使用+=运算符,它也已在2004年的Bash 3.1中引入。
如果幸运的话,在较旧的Bash版本上使用此运算符的任何脚本都将失败,并显示“命令未找到”错误,或“语法错误接近意外标记”。
对于那些关心向后兼容性的人,请使用较旧的标准Bash连接方法,如所选答案中提到的方法:
foo="Hello"
foo="$foo World"
echo $foo
> Hello World
其他回答
Bash还支持一个+=运算符,如以下代码所示:
A="X Y"
A+=" Z"
echo "$A"
输出
X Y Z轴
我解决问题的方法是
$a$b
例如
a="Hello"
b=" World"
c=$a$b
echo "$c"
它产生
Hello World
例如,如果尝试将一个字符串与另一个字符串连接,
a="Hello"
c="$a World"
则echo“$c”将产生
Hello World
具有额外的空间。
$aWorld
不起作用,正如你所想象的,但是
${a}World
生产
HelloWorld
如果您要做的是将字符串拆分为多行,则可以使用反斜杠:
$ a="hello\
> world"
$ echo $a
helloworld
中间有一个空格:
$ a="hello \
> world"
$ echo $a
hello world
此选项还只在两者之间添加一个空格:
$ a="hello \
> world"
$ echo $a
hello world
您可以在没有引号的情况下进行连接。下面是一个示例:
$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
即使现在允许使用+=运算符,它也已在2004年的Bash 3.1中引入。
如果幸运的话,在较旧的Bash版本上使用此运算符的任何脚本都将失败,并显示“命令未找到”错误,或“语法错误接近意外标记”。
对于那些关心向后兼容性的人,请使用较旧的标准Bash连接方法,如所选答案中提到的方法:
foo="Hello"
foo="$foo World"
echo $foo
> Hello World