【问题标题】:Bash Can the ternary operator be used to set values to multiple variables?Bash 三元运算符可以用来给多个变量赋值吗?
【发布时间】:2021-11-16 16:14:57
【问题描述】:

我想做的(伪)代码:

n=100
desired=""
for i in {1..10} ; do
    (( $(numeric_command_output) < n ?
        set n to the output and desired to $i :
        keep n and desired unchanged )) ; done

我知道如何使用三元运算符根据条件操作一个变量,但这可以在 bash 中完成吗?

【问题讨论】:

    标签: bash conditional-operator


    【解决方案1】:

    可以用三元运算符给多个变量赋值吗?

    是的。

    但这可以在 bash 中完成吗?

    是的。

    (( ( tmp=$(numeric_command_output) ) < n ? (n=tmp, desired=$i) : 0 ))
    

    (( tmp=$(numeric_command_output, tmp < n ? (n=tmp, desired=$i) : 0 ))
    

    【讨论】:

    • 赞!虽然肯定有更简单和更易读的方法来做到这一点,但我只是想看看这是否可以做到。我不知道 bash 中用于算术评估的列表 , 运算符。谢谢!...只是一件事,: 0 部分表示算术false
    • the list , operator en.wikipedia.org/wiki/Comma_operator : 0 part to signify arithmetic false 不,: 之后必须有一些东西。 0 可能是一个糟糕的选择,因为它是错误的,set -e 可能会退出脚本,放置一些积极的东西会更好。
    • “放一些积极的东西会更好”。或者,在这种情况下continue?我的意思是我们处于for 块的最后一个命令。
    • continue 是一个未定义的变量,在(( 命令中将计算为0。除非conitnue=something 否则它将被评估。我会放7 之类的东西,因为这在我的文化中很幸运,或者1we are at the last command of the for block (( 命令不评估命令,也不影响控制流。 (( 命令只计算算术表达式。 gnu.org/savannah-checkouts/gnu/bash/manual/…
    猜你喜欢
    • 2019-09-02
    • 2023-04-03
    • 2013-06-28
    • 1970-01-01
    • 2012-02-14
    • 2012-09-15
    • 2019-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多