如何在POSIX awk中为未定义变量设置默认值?
在POSIX awk中简洁初始化未定义变量的方法
你可以用以下更简洁的POSIX awk写法实现需求:
!foo && foo = bar
说明:
- 在POSIX awk中,未被赋值的变量默认数值为
0、字符串值为空串,这两种情况在布尔判断里都会被视为“假”。 - 利用逻辑与
&&的短路特性:如果!foo为真(即foo未定义或值为假),才会执行foo = bar;如果foo已经有非空/非0的有效值,!foo为假,后面的赋值操作会被直接跳过,不会覆盖已有值。 - 这个写法和你原来的
foo = foo ? foo : bar效果等价,但更简洁,类似Shell中${foo:-bar}的逻辑(不过Shell的${foo:-bar}会保留foo为0或空串的情况,而awk的写法会把0/空串也视为需要赋值的情况——如果需要严格区分“未定义”和“值为0/空串”,POSIX awk没有原生方法,只能通过值来推断)。
内容的提问来源于stack exchange,提问作者M0M0
相关产品推荐
相关产品推荐

