我有一个这样的脚本:我可以同时放入变量和回显吗?
str=$(echo $'Hello World\n===========\n')
echo "$str"
和它的作品!
我可以有这样的事吗?
echo str=$(echo $'Hello World\n===========\n')
我有一个这样的脚本:我可以同时放入变量和回显吗?
str=$(echo $'Hello World\n===========\n')
echo "$str"
和它的作品!
我可以有这样的事吗?
echo str=$(echo $'Hello World\n===========\n')
如果我能猜到你想要什么,如何这样做的过程中替换一个tee
?
str=$(echo $'Hello world!\n====\n' | tee -a /dev/stderr)
这有一个明显的缺点,即输出重定向到标准错误。
一个earlier version of this answer评论代码,随后从问题中删除。如果您好奇,请查看编辑历史记录。
在bash中有一个变量扩展可能对您得心应手:
${newvar=value}
尝试比如这个:
$ unset str
$ echo "${str=Hello world}"
Hello world
$ echo "$str"
Hello world
现在你双线例如:
$ unset str
$ echo "${str=$'Hello World\n===========\n'}"
Hello World
===========
$ echo "$str"
Hello World
===========
$
我认为使用两条指令会更好,因为人们可以忽略它:
str=$(echo $'Hello World\n===========\n'); echo "$str"
你至少应该在'echo“$ str”'中保留双引号,否则输出将全部在同一行上。 – tripleee 2014-11-04 08:12:11
arg,它正在使用zsh :)谢谢。 – 2014-11-04 08:14:12
'$()'修剪最后一个换行符,所以你提出的命令相当于'str = $'Hello World \ n ===========';回声“$ str”' – 2014-11-04 08:20:05
您的流程替换没有意义。代码应该简单地为'str = $'Hello World \ n =========== \ n';回声“$ str”' – tripleee 2014-11-04 07:57:49
@tripleee我想(希望)回声只是真正的程序简化。 – 2014-11-04 08:05:53