无法在Bash中将参数添加到命令中
我有以下代码,我称之为谷歌无法在Bash中将参数添加到命令中,bash,parameters,Bash,Parameters,我有以下代码,我称之为谷歌 #!/bin/bash q=$1 open "http://www.google.com/search?q=$q" 它用关键字打开Firefox。例如,通过 google cabal 我希望在命令后放置参数时,将特定的键盘添加到命令中。下面是一个例子 google -x cabal 例如,它搜索序列 "cabal is" 如何在Bash中向命令添加参数? #!/bin/bash while getopts "x:" option; do case "$o
#!/bin/bash
q=$1
open "http://www.google.com/search?q=$q"
它用关键字打开Firefox。例如,通过
google cabal
我希望在命令后放置参数时,将特定的键盘添加到命令中。下面是一个例子
google -x cabal
例如,它搜索序列
"cabal is"
如何在Bash中向命令添加参数?
#!/bin/bash
while getopts "x:" option; do
case "$option" in
x) keyword="$OPTARG";;
esac
done
#echo "$keyword"
open "http://www.google.com/search?q=$keyword"
:指定x之后应为参数。因为您有两个信息源(搜索词和修饰符),所以我将使用以下内容。它允许单个修饰符(
-x
用于附加“is”并将整个内容括在引号中,-d
用于前缀“define:”并将整个内容括在引号中,-w
用于简单地添加搜索词以限制您访问维基百科)
#!/usr/bin/env bash
while [[ $1 = - ]]; do
case $1 in
-x) shift; query+=" $1 is" ;;
-d) shift; query+=" define:$1" ;;
-s) shift; query+=" site:$1" ;;
-t) shift; query+=" title:$1" ;;
-i) params+="&btnI" ;;
# ...
-h)
echo "usage: ${0##*/} [-x arg] [-d arg] [-s arg] [-t arg] [-ih]"
echo
echo " -x: Add '[arg] is' to the google query."
echo " -d: Add 'define:[arg]' to the google query."
echo " -s: Add 'site:[arg]' to the google query."
echo " -t: Add 'title:[arg]' to the google query."
echo " -i: Do an I'm Feeling Lucky-search."
echo " -h: Show this help text."
exit ;;
esac
shift
done
query+="$*" # implode all other arguments into the query string.
open "http://www.google.com/search?q=$query$params"
请注意,引号的位置由修饰符控制,因为它可能需要引用传递给Google的参数,或者在该参数之外添加搜索词。您可以完全控制URL中生成的内容(确保在交付生产之前将echo
转换回open
)
#/bin/bash
prepend=“”
append=“”
案件“$1”
-h)
echo“用法:谷歌[-{hxdw}][]”
echo'-h:显示帮助。”
echo'-x:搜索“is”'
echo'-d:搜索“define:”
echo'-w:搜索网站:wikipedia.org'
出口
-十)
prepend=“\”
append=“is\”
转移
-(d)
prepend=“\”定义:
append=“\”“
转移
-w)
prepend=“”
append=“site:.wikipedia.org”
转移
以撒
如果[-z“$1”];然后
query=“”
其他的
query=“?q=${prepend}${1}${append}”
fi
回响http://www.google.com/search${query}
下面是一些示例输出:
pax> google -w "\"bubble sort\""
http://www.google.com/search?q="bubble sort" site:.wikipedia.org
pax> google cabal
http://www.google.com/search?q=cabal
pax> google
http://www.google.com/search
pax> google -d cabal
http://www.google.com/search?q="define:cabal"
pax> google -x wiki
http://www.google.com/search?q="wiki is"
pax> google -h wiki
Usage: google [-{hxdw}] [<arg>]
-h: show help.
-x: search for "<arg> is"
-d: search for "define:<arg>"
-w: search for <arg> site:wikipedia.org
pax>google-w“气泡排序”
http://www.google.com/search?q=“气泡排序”网站:。wikipedia.org
帕克斯>谷歌阴谋集团
http://www.google.com/search?q=cabal
帕克斯>谷歌
http://www.google.com/search
帕克斯>谷歌d阴谋集团
http://www.google.com/search?q=“定义:阴谋集团”
pax>google-Xwiki
http://www.google.com/search?q=“维基是”
pax>google-hwiki
用法:谷歌[-{hxdw}][]
-h:伸出援手。
-x:搜索“是”
-d:搜索“定义:”
-w:搜索网站:wikipedia.org
如果你不提供搜索词,你只会得到谷歌搜索页面。我不确定$OPTARG参数。我只想在参数$1中添加单词“is”。我应该把它放在参数$option中,然后在open语句中调用它吗?例如在x)keyword=“$OPTARG is”处添加它@seb:这个命令似乎有一个bug。当我不使用选项x时,它会让我进入网站:@Pax:谢谢你的回答!——我在搜索许多单词时遇到了一个小问题。这个问题可以通过将搜索模式放在引号中来解决。
pax> google -w "\"bubble sort\""
http://www.google.com/search?q="bubble sort" site:.wikipedia.org
pax> google cabal
http://www.google.com/search?q=cabal
pax> google
http://www.google.com/search
pax> google -d cabal
http://www.google.com/search?q="define:cabal"
pax> google -x wiki
http://www.google.com/search?q="wiki is"
pax> google -h wiki
Usage: google [-{hxdw}] [<arg>]
-h: show help.
-x: search for "<arg> is"
-d: search for "define:<arg>"
-w: search for <arg> site:wikipedia.org