如何将内容添加到已有字符串中?

151

我希望能够将一个字符串附加到另一个字符串上,这样每次循环时都会将“test”添加到该字符串中。

就像在PHP中一样:

$teststr = "test1\n"
$teststr .= "test2\n"
echo = "$teststr"

返回:

test1
test2

但我需要在shell脚本中执行这个操作

7个回答

267

在经典的sh(shell)中,你需要做类似这样的事情:

s=test1
s="${s}test2"
(这主题有很多变化,例如s="$s"“test2”
在bash中,你可以使用+=:
s=test1
s+=test2

34
$ string="test"
$ string="${string}test2"
$ echo $string
testtest2

16
#!/bin/bash
message="some text"
message="$message add some more"

echo $message

一些文本添加更多内容


15
teststr=$'test1\n'
teststr+=$'test2\n'
echo "$teststr"

3
VAR=$VAR"$VARTOADD(STRING)"   
echo $VAR

2

感谢Ignacio Vazquez-Abrams。

我稍作修改以提高易用性 :)

放置在脚本顶部。

NEW_LINE=$'\n'

然后可以轻松地与其他变量一起使用

variable1="test1"
variable2="test2"

DESCRIPTION="$variable1$NEW_LINE$variable2$NEW_LINE"

或者附加感谢William Pursell

DESCRIPTION="$variable1$NEW_LINE"
DESCRIPTION+="$variable2$NEW_LINE"

echo "$DESCRIPTION"

为什么不直接这样做 DESCRIPTION="${variable1}\n${variable2}\n"?这似乎是一种更简洁的实现方式,除非我漏掉了什么。 - Mint
有所不同,我刚刚测试过了。使用那种方法,如果我要回显它,我需要加上-e参数,但是使用我建议的方法,你不需要。所以它们肯定是有区别的! - n1ce-0ne

1
#!/bin/bash

msg1=${1} #First Parameter
msg2=${2} #Second Parameter

concatString=$msg1"$msg2" #Concatenated String
concatString2="$msg1$msg2"

echo $concatString 
echo $concatString2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接