我正在尝试编写一个代码,通过在链接中插入内容来从终端搜索 Google。有人知道如何用加号替换空格,以便我可以将其插入链接而不是原始搜索词吗?我正在考虑使用像 sed 这样的命令,尽管我不了解 sed 的格式。
我目前正在使用以下内容:
search() {
read F1
a=$F1
b=https://www.google.com/#q=
c=$b$a
echo OPENING:
echo $c
open $c
}
问题是这需要加号而不是空格。我需要一种方法来在 a 变量中用加号替换空格。
答案1
替换变量中的字符在 bash shell 中, 您可以使用参数扩展
例如用加号替换每个空格
$ var='some string with spaces'
$ echo "${var// /+}"
some+string++++with+spaces
或者用单个加号替换空格序列(前提是你已经启用了 shell 中的扩展通配符)
$ echo "${var//+( )/+}"
some+string+with+spaces
您可以分配给新变量newvar="${var//+( )/+}"
或重新分配以直接更改变量的值,即
$ var='some string with spaces'
$ echo "$var"
some string with spaces
$
$ var="${var//+( )/+}"
$ echo "$var"
some+string+with+spaces
以下是您更新的问题中描述的上下文中其用法的说明:
构建一个最小~/.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"
}
然后启动一个新的登录shell并测试它
$ bash -l
$ search
Please enter a search term: ask ubuntu
OPENING: https://www.google.com/#q=ask+ubuntu
$
答案2
你可以使用这个命令:
sed -i 's/ /+/g' filename
答案3
我找到了如何做到这一点的方法,它在我的电脑上有效。只需在您的 .bash_profile 中使用此代码即可。
search() {
clear
echo Type in your search term:
read F1
F=`echo "$F1" | sed "s/ /+/g"`
echo Opening: https://www.google.com/#q="$F"
open https://www.google.com/#q="$F"
}