我想编写一个简单的 bash 脚本来从命令行搜索 goosh.org 并在浏览器中打开结果。(或者,也许您甚至根本不会将其称为bash脚本,因为它所做的只是进行浏览器调用。
我创建了一个名为 goosh 的文件,其中包含一行:
open "http://goosh.org/#$1"
当搜索词只有一个单词时,无需将搜索括在引号中,这就可以工作:
$ goosh monarch
但是当我使用多个搜索词时它会失败:
$ goosh monarch butterfly
这不起作用:
open "http://goosh.org/#$1 $2 $3 $4 $5 $6 $7 $8 $9"
我该怎么做?
(十六进制值0x20
)在浏览器中转换为%20
。您可能希望对输入值使用 sed
:
echo 1 2 3 4 5 6 7 8 | sed -e 's/ /%20/'
会给你一个输出
1%202%203%204%205%206%207%208
我建议您以相同的方式解析脚本的"$@"
输入(提供给脚本的所有内容),看看这是否不能为您提供所需的结果。
编辑:
您可以尝试以下简单函数:
function goosh() {
ARGS=$(echo "$@" | sed -e 's/ /%20/g');
echo "http://www.goosh.org/#$ARGS";
}
这实际上不会调用站点;它只会将输出转储到您的控制台(因此您可以确保变量正确)。只需用open
替换echo
,应该没问题。
例:
$ goosh When will Apple buy stock in Microsoft
http://www.goosh.org/#When%20will%20Apple%20buy%20stock%20in%20Microsoft