在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

其他回答

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

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

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

$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

更安全的方式:

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

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

再看看其他关于+=

在我看来,连接两个字符串的最简单方法是编写一个函数,然后使用该函数。

function concat ()
{
    prefix=$1
    suffix=$2

    echo "${prefix}${suffix}"
}

foo="Super"
bar="man"

concat $foo $bar   # Superman

alien=$(concat $foo $bar)

echo $alien        # Superman

使用引号的最简单方法:

B=Bar
b=bar
var="$B""$b""a"
echo "Hello ""$var"