我试图通过将东西插入链接来制作一个从终端搜索谷歌的代码。有谁知道如何用加号替换空格,以便我可以将其插入链接而不是原始搜索词。我正在考虑使用诸如 sed 之类的命令,尽管我不了解 sed 的格式。
我目前正在使用以下内容:
search() {
read F1
a=$F1
b=https://www.google.com/#q=
c=$b$a
echo OPENING:
echo $c
open $c
}
Run Code Online (Sandbox Code Playgroud)
问题是这需要加号而不是空格。我需要一种方法来用 a 变量中的加号替换空格。
要在 bash shell 中替换变量中的字符,可以使用参数扩展
前任。用加号替换每个空格
$ var='some string with spaces'
$ echo "${var// /+}"
some+string++++with+spaces
Run Code Online (Sandbox Code Playgroud)
或者用一个加号替换空格序列(前提是您在 shell 中启用了扩展通配符)
$ echo "${var//+( )/+}"
some+string+with+spaces
Run Code Online (Sandbox Code Playgroud)
您可以分配给新变量newvar="${var//+( )/+}"
或重新分配以直接更改变量的值,即
$ var='some string with spaces'
$ echo "$var"
some string with spaces
$
$ var="${var//+( )/+}"
$ echo "$var"
some+string+with+spaces
Run Code Online (Sandbox Code Playgroud)
以下是它在您更新的问题中描述的上下文中的使用说明:
构建一个最小 ~/.bash_profile
if [ -r $HOME/.profile ]; then
. $HOME/.profile
fi
search() {
read -p 'Please enter a search term: ' searchterm
c="https://www.google.com/#q=${searchterm//+( )/+}"
echo "OPENING: $c"
}
Run Code Online (Sandbox Code Playgroud)
然后启动一个新的登录shell并测试它
$ bash -l
$ search
Please enter a search term: ask ubuntu
OPENING: https://www.google.com/#q=ask+ubuntu
$
Run Code Online (Sandbox Code Playgroud)