是否可以一次执行多个 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))}
)