read -p "Enter yes/no " SOMEVAR
SOMEVAR=`"echo ${SOMEVAR,,}"`
Run Code Online (Sandbox Code Playgroud)
上面的代码给了我一个${SOMEVAR,,}: bad substitution错误。
Kus*_*nda 18
参数扩展${variable,,}将扩展到shell 中$variable所有字符为小写的值bash。鉴于您在此代码运行时收到“错误替换”错误表明您实际上是
/bin/sh(并非总是如此bash)。但是没有收到错误read -p提示您更有可能是bash不支持此扩展的旧版本(在 的第 4 版中引入bash)。扩展的通用形式是匹配中的${variable,,pattern}所有字符都将转换为小写(用于转换为大写):$variablepattern^^
$ str="HELLO"
$ printf '%s\n' "${str,,[HEO]}"
heLLo
Run Code Online (Sandbox Code Playgroud)
另请参阅bash系统手册。
对于旧版本的bash,您可以改为执行以下操作来小写变量的值:
variable=$( tr 'A-Z' 'a-z' <<<"$variable" )
Run Code Online (Sandbox Code Playgroud)
这通过tr使用“here-string”传递变量的值。该tr实用程序音译中的所有字符A以ZASCII范围(假设C / POSIX区域),以在相应的字符a到z范围。
还要注意的是
SOMEVAR=`"echo ${SOMEVAR,,}"`
Run Code Online (Sandbox Code Playgroud)
最好写成
SOMEVAR=${SOMEVAR,,}
Run Code Online (Sandbox Code Playgroud)
事实上,您编写的内容会在bash4+ 版本中给您一个“找不到命令”的错误,除非您有一个名为 的命令echo string,包括空格(string用户输入的内容在哪里)。这是由于命令替换试图执行双引号字符串。
| 归档时间: |
|
| 查看次数: |
2533 次 |
| 最近记录: |