我已经看过很多这个问题而且我已经尝试了所有我发现的东西,但仍然无法让它发挥作用。
我正在尝试在虚拟主机文件中添加一个新行,用于管理别名并正确标记新条目的脚本。
我检查过它后,我会添加别名。
我的最后一次尝试:(仍然没有标签..我实际上有两个标签)
sed -i "/ServerAlias www.$account/a $newAlias" "$VHOST_FILE"
这里再次使用单个标签
sed -i "/ServerAlias www.$account/a $newAlias" "$VHOST_FILE"
我也尝试过:(这些都用t加前缀,而不是使用标签)
sed -i "/ServerAlias www.$account/a \t$newAlias" "$VHOST_FILE"
sed -i "/ServerAlias www.$account/a \\t$newAlias" "$VHOST_FILE"
sed -i "/ServerAlias www.$account/a\t$newAlias" "$VHOST_FILE"
sed -i "/ServerAlias www.$account/a\\t$newAlias" "$VHOST_FILE"
我在这里缺少什么?
感谢您的帮助
答案 0 :(得分:1)
你关闭了。问题是\\
成为双引号中的文字\
,因此\\t
和\t
变成了同一个东西。
逃离它们以获得您想要的结果:
sed -i "/ServerAlias www.$account/a \\\\t$newAlias" "$VHOST_FILE"
答案 1 :(得分:0)
在bash中,您可以使用$'\t'
插入标签。
sed "/ServerAlias www.$account/a"$'\t'"$newAlias" "$VHOST_FILE"
答案 2 :(得分:0)
有很多方法可以完成同样的事情。最好的方法是使用您可以轻松理解的内容:
line=$'\t'"$newAlias" # a tab followed by contents of newAlias
sed "/ServerAlias www.$account/a $line" "$VHOST_FILE"
然后在你很好地掌握了正在发生的事情后再将这些(下次)结合起来。