可以一次使用多个 BASH 变量操作吗?



是否可以一次执行多个 bash 变量操作?

例如:

# for this variable
foo="string_that_is_lower"
# can I do this in one shot?
$foo="${foo:0:4}"
echo "${foo^^}"

有没有办法将这些结合起来?我意识到这是一个微不足道的问题,因为这工作得很好,或者可以简单地使用其他内置工具,例如echo ${foo:0:4} | tr [[:lower:]] [[:upper:]],但这很蹩脚。

我已经尝试了我认为可能有效的所有逻辑组合:

${${foo^^}:0:4}
${{foo^^}:0:4}
${foo^^,:0:4}
${foo^^;:0:4}
${foo^^ :0:4}

都会产生语法错误。

我在高级 Bash 脚本手册、手册页、谷歌或这里没有发现"(组合|多个)bash 变量操作"的实例,所以也许你就是做不到,但可能我只是没有搜索正确的术语。

这是一个非常好的问题,但不是参数扩展所允许的。man bash规定扩展对参数名称或符号进行操作,例如

参数扩展

"$"字符引入参数扩展、命令 替换或算术扩展。参数名称或要扩展的符号可以括在大括号中,这是可选的 但用于保护要从字符扩展的变量 紧随其后的是可以解释为"的一部分" 名字。

当您寻求将扩展链接在一起时,您尝试将第一个扩展产生的文本用作参数名称或符号(事实并非如此),因此命令失败并显示语法错误。

问得好!

(注意:为了完整 - 在某些情况下,您可以将参数扩展嵌入到另一个参数扩展中,但这些仅限于外部扩展正在寻找单个数字作为其扩展的一部分,该扩展可以通过包含的扩展(例如字符串的长度)提供,例如${#var}v=foo; echo ${v:$((${#v}-1))})

最新更新