如何解决如何在一个回显中大写和替换 shell 脚本中的字符
我试图找到一种方法来在一个回声中大写和替换字符串的破折号。我无法使用多行重新分配字符串值。
例如:
string='test-e2e-uber'
需要 echo $string
作为 TEST_E2E_UBER
${string^^}
表示大写
${string//-/_}
用于替换
但是,当我尝试将它们组合起来时,它似乎不起作用(错误替换错误)。 是否有正确的语法来实现这一点?
echo ${string^^//-/_}
解决方法
这不会直接回答您的问题,但仍然可以通过以下脚本实现您想要的:
declare -u string='test-e2e-uber'
echo ${string//-/_}
,
为什么你如此不喜欢有两个连续的赋值语句?如果你真的讨厌它,你将不得不恢复到一些外部程序来为你完成任务,例如
string=$(tr a-z- A-Z_ <<<$string)
但我认为为如此简单的操作创建子进程是一种资源浪费。
,- 您可以直接使用 'tr' 命令完成此操作,只需一个 'echo'
echo "$string" | tr "-" "_" | tr "[:lower:]" "[:upper:]"
TEST_E2E_UBER
我不认为 'tr' 只允许在一个命令中转换 2 个对象,所以我使用管道进行输出重定向
- 或者你可以用 'awk' 做类似的事情
echo "$string" | awk '{gsub("-","_",$0)} {print toupper($0)}'
TEST_E2E_UBER
在这种情况下,我用“gsub”替换连字符,然后我将整个记录打印为大写
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。