我想在 Bash 中实现这一点:echo $(a=1)
并打印变量的值a
我测试了eval
, $$a
, {}
,$()
但大多数时候它们都不起作用,无论是我从字面上a=1
还是在一种情况下(我不记得是哪一种)它试图执行该值。
我知道我可以做到:a=1;echo $a
但是因为我对每行一个命令很有趣(即使有时变得有点复杂)我想知道是否可以使用echo
或使用printf
我想在 Bash 中实现这一点:echo $(a=1)
并打印变量的值a
我测试了eval
, $$a
, {}
,$()
但大多数时候它们都不起作用,无论是我从字面上a=1
还是在一种情况下(我不记得是哪一种)它试图执行该值。
我知道我可以做到:a=1;echo $a
但是因为我对每行一个命令很有趣(即使有时变得有点复杂)我想知道是否可以使用echo
或使用printf
如果您知道$a
之前未设置,则可以使用以下语法执行此操作:
echo ${a:=1}
这和其他类型的参数扩展在POSIX shell 命令语言规范中定义。
如果要分配数值,另一个不依赖于先前未设置的值的选项是使用算术扩展:
echo $(( a = 1 ))
这将分配值并回显已分配的数字。
值得一提的是,您尝试做的事情不能通过设计在子shell中完成,因为子进程无法修改其父进程的环境。