在PHP中,字符串按如下方式连接在一起:
$foo = "Hello";
$foo .= " World";
在这里,$foo变成了“Hello World”。
这是如何在Bash中实现的?
在PHP中,字符串按如下方式连接在一起:
$foo = "Hello";
$foo .= " World";
在这里,$foo变成了“Hello World”。
这是如何在Bash中实现的?
当前回答
如果这是将“World”添加到原始字符串的示例,则可以是:
#!/bin/bash
foo="Hello"
foo=$foo" World"
echo $foo
输出:
Hello World
其他回答
我有点喜欢做一个快速的功能。
#! /bin/sh -f
function combo() {
echo $@
}
echo $(combo 'foo''bar')
还有一种剥猫皮的方法。这一次有功能:D
这里是对大多数答案的简要总结。
假设我们有两个变量,$1设置为“1”:
set one two
a=hello
b=world
下表说明了我们可以组合a和b的值来创建新变量c的不同上下文。
Context | Expression | Result (value of c)
--------------------------------------+-----------------------+---------------------
Two variables | c=$a$b | helloworld
A variable and a literal | c=${a}_world | hello_world
A variable and a literal | c=$1world | oneworld
A variable and a literal | c=$a/world | hello/world
A variable, a literal, with a space | c=${a}" world" | hello world
A more complex expression | c="${a}_one|${b}_2" | hello_one|world_2
Using += operator (Bash 3.1 or later) | c=$a; c+=$b | helloworld
Append literal with += | c=$a; c+=" world" | hello world
几点注意事项
将赋值的RHS括在双引号中通常是一种很好的做法,尽管在许多情况下它是可选的+如果以小增量构造大字符串,特别是在循环中,则从性能角度来看,=更好在变量名周围使用{}来消除扩展的歧义(如上表第2行所示)。如第3行和第4行所示,不需要{},除非变量与一个字符串连接,该字符串以shell变量名中有效的第一个字符(即字母或下划线)开头。
另请参见:
BashFAQ/013-如何连接两个变量?我们什么时候需要在外壳变量周围使用大括号?
我想从列表中创建一个字符串。找不到答案,所以我把它贴在这里。以下是我所做的:
list=(1 2 3 4 5)
string=''
for elm in "${list[@]}"; do
string="${string} ${elm}"
done
echo ${string}
然后得到以下输出:
1 2 3 4 5
还有一种方法。。。
> H="Hello "
> U="$H""universe."
> echo $U
Hello universe.
…还有另一个。
> H="Hello "
> U=$H"universe."
> echo $U
Hello universe.
如果您要做的是将字符串拆分为多行,则可以使用反斜杠:
$ a="hello\
> world"
$ echo $a
helloworld
中间有一个空格:
$ a="hello \
> world"
$ echo $a
hello world
此选项还只在两者之间添加一个空格:
$ a="hello \
> world"
$ echo $a
hello world