Невозможно добавить параметр к вашей команде в Bash - PullRequest
0 голосов
/ 21 мая 2009

У меня есть следующий код, который я называю Google

#!/bin/bash

q=$1
open "http://www.google.com/search?q=$q"

Он открывает Firefox с ключевым словом. Например,

google cabal

Я хочу, чтобы к команде добавлялись определенные сочетания клавиш, когда я ставлю параметр после команды. Ниже приведен пример

google -x cabal

Поиск в последовательности, например

"cabal is"

Как добавить параметр к вашей команде в Bash?

Ответы [ 3 ]

3 голосов
/ 09 июня 2009

Поскольку у вас есть два источника информации (поисковый запрос и модификатор), я бы использовал следующее. Он позволяет использовать один модификатор (-x для добавления «есть» и заключения всего в кавычки, -d для добавления префикса «define:» и заключения всего в кавычки и -w для простого добавления поискового запроса ограничить вас википедией).

Обратите внимание, что размещение цитат контролируется модификатором, поскольку может потребоваться процитировать аргумент, переданный в Google, или добавить поисковые термины вне этого аргумента. Вы имеете полный контроль над тем, что создается в URL-адресе (перед отправкой в ​​производство убедитесь, что echo обратно превращен в open).

#!/bin/bash
prepend=""
append=""
case "$1" in
    -h)
        echo 'Usage: google [-{hxdw}] [<arg>]'
        echo '       -h: show help.'
        echo '       -x: search for "<arg> is"'
        echo '       -d: search for "define:<arg>"'
        echo '       -w: search for <arg> site:wikipedia.org'
        exit;;

    -x)
        prepend="\""
        append=" is\""
        shift;;
    -d)
        prepend="\"define:"
        append="\""
        shift;;
    -w)
        prepend=""
        append=" site:.wikipedia.org"
        shift;;
esac
if [[ -z "$1" ]] ; then
    query=""
else
    query="?q=${prepend}${1}${append}"
fi
echo 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

Если вы не предоставите поисковый запрос, вы просто получите страницу поиска Google.

3 голосов
/ 21 мая 2009
#!/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 ожидается аргумент.

2 голосов
/ 22 мая 2009
#!/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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...