ターミナルで次のように入力したときにURLを開くスクリプトを作成しています。
#!/usr/bin/bash
## origin: https://www.vivaolinux.com.br/script/Abrir-arquivos-em-nova-aba-no-Firefox
##
### Se quizer que o novo link abra em nova janela digite New-Window; Se quizer em novo aba, digite New-Tab entre as apas abaixo. O padrão é New-Tab.
N=0
J=0
A=0
L=0
TAB="--new-tab"
WINDOW="--new-window"
TAB_KTERMINAL="konsole --new-tab -- bash -c"
TAB_GTERMINAL="gnome-terminal --tab -- bash -c"
LYNX="$(which lynx)"
FIREFOX="$(which firefox)"
## Opções de --new-tab e --new-window OK
CHROME="$(which google-chrome)"
## URL default
HOME_PAGE="http://www.google.com"
function help(){
echo -e "\n\e[1;31mUsage\033[1;32m: \033[1;34m${0} \033[1;35m(\033[1;32m-f \033[1;31m | \033[1;32m-g\033[1;35m) (\033[1;32m-t \033[1;31m| \033[1;32m-w\033[1;35m) (\033 [1;32m--url\033[1;35m)\033[1;34m=\033[1;37m\"\033[1;32mwww.shellscript.com.br\033[1;37m\"
\n\033[1;35m(\033[1;32m-f\033[1;35m) \033[1;34m= \033[1;37mto open with mozilla-firefox
\033[1;35m(\033[1;32m-g \033[1;31m| \033[1;32m--ch\033[1;35m) \033[1;34m= \033[1; 37m to open with google-chrome
\033[1;35m(\033[1;32m-t\033[1;35m) \033[1;34m= \033[1;37mto open a new tab in the open browser
\033[1;35m(\033[1;32m-w\033[1;35m) \033[1;34m= \033[1;37mto open a new browser window
\033[1;35m(\033[1;32m--url\033[1;35m) \033[1;34m= \033[1;37m\"\033[1;32mwww.shellscript.com.br \033[1;37m\"\n"
exit 0
}
OPTS=$(getopt -a -n ${0} -o f,g,t,w,h --long url:,ch:,help -- "$@")
eval set -- "${OPTS}"
if [ $# -lt 3 ]; then
help
else
while :; do
case "$1" in
-f)
N=1
NAVEGADOR="${FIREFOX}"
shift 2
;;
-g | --ch)
N=1
NAVEGADOR="${CHROME}"
shift 2
;;
-t)
A=1
NEWTAB="${TAB}"
shift 2
;;
-w)
J=1
JANELA="${WINDOW}"
shift 2
;;
--url)
L=1
URL="${2}"
shift 2
;;
-h | --help)
help
shift
;;
--) #Skip
shift
break
;;
esac
done
fi
echo
echo "(($N && $A)) && ${NAVEGADOR} ${NEWTAB} ${HOME_PAGE}"
echo
echo "(($N && $J)) && ${NAVEGADOR} ${JANELA} ${HOME_PAGE}"
echo
echo "(($N && $A && $L)) && ${NAVEGADOR} ${NEWTAB} ${URL}"
echo
echo "(($N && $J && $L)) && ${NAVEGADOR} ${JANELA} ${URL}"
echo
コマンドを実行するとき:
./url -f -t --url="www.shellscript.com.br"
以下が表示されます。
((1 && 1 && 1)) && /usr/bin/firefox --new-tab www.shellscript.com.br
ただし、次のように表示されます。
((1 && 0 && 1)) && /usr/bin/firefox www.shellscript.com.br
コマンドを実行するとき:
./url -f -w --url="www.shellscript.com.br"
以下が表示されます。
((1 && 1 && 1)) && /usr/bin/firefox --new-window www.shellscript.com.br
ただし、次のように表示されます。
((1 && 0 && 1)) && /usr/bin/firefox www.shellscript.com.br
コマンドを実行するとき:
./url -g -t --url="www.shellscript.com.br"
以下が表示されます。
((1 && 1 && 1)) && /usr/bin/google-chrome --new-tab www.shellscript.com.br
ただし、次のように表示されます。
((1 && 0 && 1)) && /usr/bin/google-chrome www.shellscript.com.br
コマンドを実行するとき:
./url -g -w --url="www.shellscript.com.br"
以下が表示されます。
((1 && 1 && 1)) && /usr/bin/google-chrome --new-window www.shellscript.com.br
ただし、次のように表示されます。
((1 && 0 && 1)) && /usr/bin/google-chrome www.shellscript.com.br
また、次のように入力すると、コマンドに渡されたコンテンツのみを開くようにコードを設計する方法を理解しようとしています。
例:
./url -f -t
./url -f -w
./url -g -t
./url -g -w
./url -g -t --url="www.shellscript.com.br"
./url -g -w --url="www.shellscript.com.br"
コマンドを実行するとき:
$ ./url -g -t
出力は次のとおりです
((1 && 0)) && /usr/bin/google-chrome http://www.google.com
((1 && 0)) && /usr/bin/google-chrome http://www.google.com
((1 && 0 && 0)) && /usr/bin/google-chrome
((1 && 0 && 0)) && /usr/bin/google-chrome
コマンドを実行するとき:
$ ./url -f -t
出力は次のとおりです
((1 && 0)) && /usr/bin/firefox http://www.google.com
((1 && 0)) && /usr/bin/firefox http://www.google.com
((1 && 0 && 0)) && /usr/bin/firefox
((1 && 0 && 0)) && /usr/bin/firefox
複数のブラウザインスタンスではなく、1つのブラウザインスタンスのみが開きます。
答え1
オプションに引数がない複数の場所で2ビットを移動します。オプションにのみ--url
パラメータがあるため、この操作は1つだけ実行する必要がありますshift 2
。