쉘 스크립팅을 배우고 있으며 배우기 좋은 방법을 찾는 것이 어렵다는 것을 알고 있습니다. 아래 옵션을 통해 사용자가 다양한 인터넷 엔진을 검색 할 수있게 해주는 스크립트를 만들었습니다. 어떤 사람은이 문제를보고 내가 잘못 것을 지적 할 수 있다면 내가 어떻게이 스크립트를 어떻게 향상시킬 수 있습니까?
#!/bin/bash
## Get user search-engine option
while getopts aegwy: OPTIONS ; do
case "$OPTIONS" in
a) ENGINE="http://www.amazon.com/s/ref=nb_sb_noss/?field-keywords";;
e) ENGINE="http://www.ebay.com/sch/i.html?_nkw";;
g) ENGINE="http://www.google.com/search?q";;
w) ENGINE="http://en.wikipedia.org/wiki/?search";;
y) ENGINE="http://www.youtube.com/results?search_query";;
?) ERRORS=true;;
esac
done &>/dev/null
## Ensure correct command usage
[ $# -ne 2 ] || [ $ERRORS ] && printf "USAGE: $(basename $0) [-a Amazon] [-e eBay] [-g Google] [-w Wikipedia] [-y YouTube] \"search query\"\n" && exit 1
## Ensure user is connected to the Internet
ping -c 1 209.85.147.103 &>/dev/null ; [ $? -eq 2 ] && printf "You are not connected to the Internet!\n" && exit 1
## Reformat the search query
QUERY=`printf "$2" | sed 's/ /+/g'`
## Execute the search and exit program
which open &>/dev/null ; [ $? -eq 0 ] && open "$ENGINE"="$QUERY" &>/dev/null && exit 0 || xdg-open "$ENGINE"="$QUERY" &>/dev/null && exit 0 || printf "Command failed!\n" && exit 1
미리 감사드립니다 모두에 등을 개선하기 위해 정말 감사하겠습니다, 많은 의미!
예상대로 작동합니까? '[...] && ... '는 읽기가 약간 어렵다. 대신에'if'를 사용하는 것을 고려해 보라. 그 외에도 괜찮은 것 같습니다 ... –
잘 작동하지만, 더 좋은 방법이 있다면 잘 모르겠습니다. 답변을 주셔서 감사합니다. – Cristian
전문가 중 한 명은 뭔가 생각 났을 지 모르지만,이게 맞을 것 같습니다. . 당신의'y' 옵션은 값을 원한 것처럼 보이고,'[...] &&'물건은''[...]''이라면 더 읽기 쉽지만, 그렇지 않으면 괜찮아 보입니다. –