read -p "Enter yes/no " SOMEVAR
SOMEVAR=`"echo ${SOMEVAR,,}"`
上面的代码给我一个${SOMEVAR,,}: bad substitution
错误。
在外壳程序中,参数扩展${variable,,}
将扩展为$variable
小写所有字符的值bash
。假设您在运行此代码时收到“替换错误”错误,则表明您实际上是
/bin/sh
(并非总是bash
)。但没有收到错误read -p
提示,则表明您更有可能bash
不支持此扩展(在的版本4中引入bash
)。扩展的一般形式是将匹配项中的${variable,,pattern}
所有字符都转换为小写(用于转换为大写):$variable
pattern
^^
$ str="HELLO"
$ printf '%s\n' "${str,,[HEO]}"
heLLo
另请参见bash
系统上的手册。
对于的旧版本bash
,您可以改为执行以下操作以小写变量的值:
variable=$( tr 'A-Z' 'a-z' <<<"$variable" )
这通过tr
使用“ here-string”传递变量的值。该tr
实用程序音译中的所有字符A
以Z
ASCII范围(假设C / POSIX区域),以在相应的字符a
到z
范围。
另请注意
SOMEVAR=`"echo ${SOMEVAR,,}"`
最好写成
SOMEVAR=${SOMEVAR,,}
实际上,bash
除非您有一个名为的命令echo string
,包括空格(string
用户输入的位置),否则您在4+发行版中所写的内容都会给您一个“找不到命令”的错误。这是由于命令替换试图执行双引号字符串引起的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句