Luk*_*sna 5 string variables bash scripting
一枪可以执行多个bash变量操作吗?
例如:
# for this variable
foo="string_that_is_lower"
# can I do this in one shot?
$foo="${foo:0:4}"
echo "${foo^^}"
Run Code Online (Sandbox Code Playgroud)
有没有办法将这些结合起来?我意识到这是一个微不足道的问题,因为它可以正常工作,或者一个人可以简单地使用其他内置工具(例如)echo ${foo:0:4} | tr [[:lower:]] [[:upper:]]
,但这很is脚。
我已经尝试了所有我认为可能可行的逻辑组合:
${${foo^^}:0:4}
${{foo^^}:0:4}
${foo^^,:0:4}
${foo^^;:0:4}
${foo^^ :0:4}
Run Code Online (Sandbox Code Playgroud)
全部产生语法错误。
我在Advanced Bash 脚本手册,联机帮助页或Google或此处都找不到“(combine | multiple)bash变量操作”的实例,所以也许您做不到,但也许我只是在搜索为正确的条款。
这是一个很好的问题,但不是参数扩展所允许的。man bash
提供扩展对参数名称或符号进行操作,例如
参数扩展
`$' 字符引入了参数扩展、命令替换或算术扩展。要扩展的参数名称或符号可以用大括号括起来,这是可选的,但用于保护要扩展的变量免受紧跟其后的字符的影响,这些字符可能被解释为名称的一部分。
当您试图将扩展链接在一起时,您试图将第一个扩展产生的文本用作参数名称或符号(它不是),因此命令失败并出现语法错误。
好问题!
(注意:要完整 - 在某些情况下,您可以将参数扩展嵌入另一个参数扩展中,但仅限于外部扩展正在寻找单个数字作为其扩展的一部分的情况,该数字可以由包括扩展,例如字符串的长度,例如${#var}
in v=foo; echo ${v:$((${#v}-1))}
)