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

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

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

这是如何在Bash中实现的?


当前回答

我解决问题的方法是

$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

其他回答

我想从列表中创建一个字符串。找不到答案,所以我把它贴在这里。以下是我所做的:

list=(1 2 3 4 5)
string=''

for elm in "${list[@]}"; do
    string="${string} ${elm}"
done

echo ${string}

然后得到以下输出:

1 2 3 4 5

如果您要做的是将字符串拆分为多行,则可以使用反斜杠:

$ a="hello\
> world"
$ echo $a
helloworld

中间有一个空格:

$ a="hello \
> world"
$ echo $a
hello world

此选项还只在两者之间添加一个空格:

$ a="hello \
>      world"
$ echo $a
hello world

如果要附加下划线之类的内容,请使用转义符(\)

FILEPATH=/opt/myfile

这不起作用:

echo $FILEPATH_$DATEX

这很好:

echo $FILEPATH\\_$DATEX

有一种特殊情况需要注意:

user=daniel
cat > output.file << EOF
"$user"san
EOF

将输出“daniel”san,而不是danielsan,正如您可能希望的那样。在这种情况下,您应该改为:

user=daniel
cat > output.file << EOF
${user}san
EOF

还有一种方法。。。

> H="Hello "
> U="$H""universe."
> echo $U
Hello universe.

…还有另一个。

> H="Hello "
> U=$H"universe."
> echo $U
Hello universe.