-1

我想在 Bash 中实现这一点:echo $(a=1)并打印变量的值a

我测试了eval, $$a, {}$()但大多数时候它们都不起作用,无论是我从字面上a=1还是在一种情况下(我不记得是哪一种)它试图执行该值。

我知道我可以做到:a=1;echo $a但是因为我对每行一个命令很有趣(即使有时变得有点复杂)我想知道是否可以使用echo或使用printf

4

1 回答 1

3

如果您知道$a之前未设置,则可以使用以下语法执行此操作:

echo ${a:=1}

这和其他类型的参数扩展在POSIX shell 命令语言规范中定义。

如果要分配数值,另一个不依赖于先前未设置的值的选项是使用算术扩展:

echo $(( a = 1 ))

这将分配值并回显已分配的数字。

值得一提的是,您尝试做的事情不能通过设计在子shell中完成,因为子进程无法修改其父进程的环境。

于 2016-04-04T17:25:28.930 回答