Bash 如何从命令行搜索goosh.org?

Bash 如何从命令行搜索goosh.org?,bash,shell,command-line,sh,command-line-interface,Bash,Shell,Command Line,Sh,Command Line Interface,我想编写一个简单的bash脚本,从命令行搜索goosh.org并在浏览器中打开结果。(或者,您甚至不会将其称为bash脚本,因为它所做的只是进行浏览器调用。) 我创建了一个名为goosh的文件,其中包含一行: open "http://goosh.org/#$1" 当搜索词仅为一个单词时,无需将搜索括在引号中: $ goosh monarch 但当我使用多个搜索词时,它会失败: $ goosh monarch butterfly 这不起作用: open "http://goosh.org/

我想编写一个简单的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";
}
这实际上不会调用该站点;它只会将输出转储到您的控制台(这样您就可以确保变量是正确的)。只需将
echo
替换为
open
即可

例如:

  $ goosh When will Apple buy stock in Microsoft
  http://www.goosh.org/#When%20will%20Apple%20buy%20stock%20in%20Microsoft

十六进制值为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";
}
这实际上不会调用该站点;它只会将输出转储到您的控制台(这样您就可以确保变量是正确的)。只需将
echo
替换为
open
即可

例如:

  $ goosh When will Apple buy stock in Microsoft
  http://www.goosh.org/#When%20will%20Apple%20buy%20stock%20in%20Microsoft

十六进制值为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";
}
这实际上不会调用该站点;它只会将输出转储到您的控制台(这样您就可以确保变量是正确的)。只需将
echo
替换为
open
即可

例如:

  $ goosh When will Apple buy stock in Microsoft
  http://www.goosh.org/#When%20will%20Apple%20buy%20stock%20in%20Microsoft

十六进制值为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";
}
这实际上不会调用该站点;它只会将输出转储到您的控制台(这样您就可以确保变量是正确的)。只需将
echo
替换为
open
即可

例如:

  $ goosh When will Apple buy stock in Microsoft
  http://www.goosh.org/#When%20will%20Apple%20buy%20stock%20in%20Microsoft

非常感谢。我将如何获取这些输入,解析它们,并在浏览器中打开它们?您是在专门寻找一个shell脚本,还是一个函数也能正常工作(请参见编辑我的帖子)?是的,就是这样。完美的谢谢,谢谢。我将如何获取这些输入,解析它们,并在浏览器中打开它们?您是在专门寻找一个shell脚本,还是一个函数也能正常工作(请参见编辑我的帖子)?是的,就是这样。完美的谢谢,谢谢。我将如何获取这些输入,解析它们,并在浏览器中打开它们?您是在专门寻找一个shell脚本,还是一个函数也能正常工作(请参见编辑我的帖子)?是的,就是这样。完美的谢谢,谢谢。我将如何获取这些输入,解析它们,并在浏览器中打开它们?您是在专门寻找一个shell脚本,还是一个函数也能正常工作(请参见编辑我的帖子)?是的,就是这样。完美的谢谢