替换字符串中的子字符串



我刚刚尝试了我的第一个bash脚本之一,我需要在url中找到一个子字符串(在?部分之后(,并用replace_string,替换

#!/bin/bash
url="https://example.com/tfzzr?uhg"
#       123456 ...

first= echo `expr index "$url" ?`
last= expr length $url
replace_string="abc"

part_to_be_replace = echo ${url:($first+1):$last}//dont know how to use variable here
substring(url,part_to_be_replace,replace_string)

它不起作用,我只能找到第一个准确度?,以及字符串的长度

这有帮助吗?

url="https://example.com/tfzzr?uhg"
replace_string="abc"
echo "${url}"
https://example.com/tfzzr?uhg
echo "${url//?*/${replace_string}}"
https://example.com/tfzzrabc
# If you still want the "?"
echo "${url//?*/?${replace_string}}"
https://example.com/tfzzr?abc

请参阅https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html了解更多详细信息。

使用参数扩展:

#! /bin/bash
url='https://example.com/tfzzr?uhg'
replace_string=abc
new=${url%?*}?$replace_string
echo "$new"
  • ${url%?*}$url中删除模式(即?及其后面的任何内容(。?需要被引用,否则它将匹配模式中的单个字符。将百分号加倍以删除可能最长的子字符串,即从第一个?开始

相关内容

  • 没有找到相关文章

最新更新