Bash将值赋值给变量作为命令替换和打印值输出

Bash将值赋值给变量作为命令替换和打印值输出,bash,variables,echo,command-substitution,Bash,Variables,Echo,Command Substitution,我想在Bash中实现这一点:echo$(a=1)并打印变量a 我测试了eval,$$a,{},$(),但大多数情况下,它们都不起作用,要么我得到了字面上的a=1,要么在一种情况下(我不记得是哪种情况)它试图执行该值 我知道我能做到:a=1;echo$a但由于我对每行一个命令不感兴趣(即使有时变得有点复杂),我想知道是否可以使用echo或printf来实现这一点,如果您知道$a以前未设置,可以使用以下语法: echo ${a:=1} 此类型以及其他类型的参数扩展在中定义 如果要指定数值,另一个选

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

我测试了
eval
$$a
{}
$()
,但大多数情况下,它们都不起作用,要么我得到了字面上的
a=1
,要么在一种情况下(我不记得是哪种情况)它试图执行该值


我知道我能做到:
a=1;echo$a
但由于我对每行一个命令不感兴趣(即使有时变得有点复杂),我想知道是否可以使用
echo
printf
来实现这一点,如果您知道
$a
以前未设置,可以使用以下语法:

echo ${a:=1}
此类型以及其他类型的参数扩展在中定义

如果要指定数值,另一个选项(不取决于之前未设置的值)是使用算术展开:

echo $(( a = 1 ))
这将指定值并回显已指定的编号


值得一提的是,您试图通过设计在子shell中完成的操作无法完成,因为子进程无法修改其父进程的环境。

第二次我也看到了它,但如果我使用这种方式(all-in-one命令),它可能是一个字符串。如果不使用
unset
,则第一个选项将使其有用一次:(您可能需要
echo${a:-1}
,如果
a
未设置(或设置为空字符串),它将使用
1
进行扩展,但不设置(或更改)
a
@chepner的值。我的意图是为
$a
分配一个新值,并打印新值(但我不是100%)@我想我误解了他上面的评论。@TomFenech是的,这就是我想要的。