在PHP中,字符串按如下方式连接在一起:
$foo = "Hello";
$foo .= " World";
在这里,$foo变成了“Hello World”。
这是如何在Bash中实现的?
在PHP中,字符串按如下方式连接在一起:
$foo = "Hello";
$foo .= " World";
在这里,$foo变成了“Hello World”。
这是如何在Bash中实现的?
当前回答
有一种特殊情况需要注意:
user=daniel
cat > output.file << EOF
"$user"san
EOF
将输出“daniel”san,而不是danielsan,正如您可能希望的那样。在这种情况下,您应该改为:
user=daniel
cat > output.file << EOF
${user}san
EOF
其他回答
即使现在允许使用+=运算符,它也已在2004年的Bash 3.1中引入。
如果幸运的话,在较旧的Bash版本上使用此运算符的任何脚本都将失败,并显示“命令未找到”错误,或“语法错误接近意外标记”。
对于那些关心向后兼容性的人,请使用较旧的标准Bash连接方法,如所选答案中提到的方法:
foo="Hello"
foo="$foo World"
echo $foo
> Hello World
尽管有特殊的运算符+=用于连接,但有一种更简单的方法:
foo='Hello'
foo=$foo' World'
echo $foo
双引号需要额外的计算时间来解释内部变量。如果可能,请避免。
foo="Hello"
foo="${foo} World"
echo "${foo}"
> Hello World
通常,要连接两个变量,只需将它们一个接一个地写入即可:
a='Hello'
b='World'
c="${a} ${b}"
echo "${c}"
> Hello World
有一种特殊情况需要注意:
user=daniel
cat > output.file << EOF
"$user"san
EOF
将输出“daniel”san,而不是danielsan,正如您可能希望的那样。在这种情况下,您应该改为:
user=daniel
cat > output.file << EOF
${user}san
EOF
a="Hello,"
a=$a" World!"
echo $a
这是连接两个字符串的方式。