스크립트가 활성화되지 않음 옵션

스크립트가 활성화되지 않음 옵션

터미널을 통해 다음을 입력할 때 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

옵션에 인수가 없는 여러 위치에서 2비트를 이동합니다. 옵션 에만 --url매개변수가 있으므로 이 작업은 하나만 수행해야 합니다 shift 2.

관련 정보