无法在Bash中为google-books制作if-else循环

Léo*_* 준영 1 bash

我目前的代码

#!/bin/bash

#w=$2
#e=$3
#r=$4
#t=$5
#o=$5
#
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;;
    -wo)
        prepend=""
        append=" site:.mathworld.wolfram.com/"
        shift;;
    -so)
        prepend=""
        append=" site:.stackoverflow.com/"
        shift;;
    -b)
        prepend=""
        append=""
        shift;;



esac
if [[ -z "$1" ]] ; then      # I am not sure about this line and about -z 
    query=""
else
    query="?q=${prepend}${1}${append}${params}"
fi
# you can use echo to put the url to history, eg
# echo http://www.google.com/search${query}

open "http://www.google.com/search${query}"
Run Code Online (Sandbox Code Playgroud)

我想要open命令的if-else循环

我不成功的尝试

if $1==-b; then$
     open "http://www.books.google.com/search${query}"
 else
     open "http://www.google.com/search${query}"                               
 fi
Run Code Online (Sandbox Code Playgroud)

我通过gg执行shell脚本

gg -b "Freakonomics"        
line 54: Freakonomics==-b: command not found
Run Code Online (Sandbox Code Playgroud)

如何检查$ 1的价值,以便您可以在Firefox中开始google-books-search?

ele*_*n81 5

尝试:

if [ "$1" = "-b" ]; then
    open "http://www.books.google.com/search${query}"
else
    open "http://www.google.com/search${query}"                               
fi
Run Code Online (Sandbox Code Playgroud)

编辑:在比较运算符之前和之后添加了空格,这要感谢Dennis Williamson的评论.

  • 你需要在等号周围的空格,否则它总是评价为真.除非你需要与sh兼容,否则你应该总是在bash中使用双括号:if [["$ 1"==" - b"]]; 然后 (3认同)