【问题标题】:Bash assignment value to variable as command substitution and print value outputbash 赋值给变量作为命令替换和打印值输出
【发布时间】:2016-04-04 16:52:36
【问题描述】:

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

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

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

【问题讨论】:

    标签: bash variables echo command-substitution


    【解决方案1】:

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

    echo ${a:=1}
    

    这和其他类型的参数扩展在POSIX shell command language specification 中定义。

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

    echo $(( a = 1 ))
    

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

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

    【讨论】:

    • 第二次我也看到了,但如果我使用这种方式(多合一命令),它可能会是一个字符串。第一个如果我不使用 unset 让它有用一次。 :(
    • 你可能想要echo ${a:-1},如果a未设置(或设置为空字符串),则使用1进行扩展,但不设置(或更改)的值a.
    • @chepner 我的印象是为$a 分配一个新值并打印新值(但我不是 100%)
    • @TomFenech 我想我误解了他上面的评论。
    • @TomFenech 是的,这就是我想要的。
    猜你喜欢
    • 2013-12-08
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    • 2012-03-20
    • 2020-07-27
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    相关资源
    最近更新 更多