在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
其他回答
这是通过AWK的:
$ foo="Hello"
$ foo=$(awk -v var=$foo 'BEGIN{print var" World"}')
$ echo $foo
Hello World
有一种特殊情况需要注意:
user=daniel
cat > output.file << EOF
"$user"san
EOF
将输出“daniel”san,而不是danielsan,正如您可能希望的那样。在这种情况下,您应该改为:
user=daniel
cat > output.file << EOF
${user}san
EOF
更安全的方式:
a="AAAAAAAAAAAA"
b="BBBBBBBBBBBB"
c="CCCCCCCCCCCC"
d="DD DD"
s="${a}${b}${c}${d}"
echo "$s"
AAAAAAAAAAAABBBBBBBBBBBBCCCCCCCCCCCCDD DD
包含空格的字符串可以成为命令的一部分,请使用“$XXX”和“${XXX}”来避免这些错误。
再看看其他关于+=
var1='hello'
var2='world'
var3=$var1" "$var2
echo $var3
请注意,这不会起作用
foo=HELLO
bar=WORLD
foobar=PREFIX_$foo_$bar
因为它似乎掉了$foo,给你留下了:
前缀_世界
但这将起作用:
foobar=PREFIX_"$foo"_"$bar"
并为您提供正确的输出:
前缀HELLO_WORLD