improve argument validation
authorAndrew Lorimer <andrew@lorimer.id.au>
Tue, 22 May 2018 08:25:29 +0000 (18:25 +1000)
committerAndrew Lorimer <andrew@lorimer.id.au>
Tue, 22 May 2018 08:25:29 +0000 (18:25 +1000)
duckduckget.sh
index b24a2fbeaa78bc90d84387b717b3325a5726d46f..3999cba57619dbd2b0a1ce6c45b59b288eccd2e3 100755 (executable)
@@ -4,22 +4,33 @@
 
 args=("$@")
 site=${args[0]}
-filetype=${args[1]}
+extension=${args[1]}
 outdir=${args[2]}
+filetype=""
 
-if [ $# != 3 ]
+if (($# == 0 ))
        then
                printf  "\n\x1b[31mWrong number of arguments\x1b[0m\n\n"
-               printf "Usage: duckduckget [site] [filetype] [outdir]\n       where [site] is the domain to search for files\n             [filetype] is extension without preceeding dot\n             [outputdir] is the output directory relative to working directory"
+               printf "Usage: duckduckget SITE [FILETYPE] [DESTINATION] \n       where SITE is the domain to search for files\n             [FILETYPE] is extension without preceeding dot\n             [DESTINATION] is the output directory relative to working directory"
                exit 1
 fi
 
+if [[ $outdir == "" ]]
+        then
+                outdir="`pwd`/"
+fi
+
 if ! [[ $outdir =~ /$ ]]
        then
-               $outdir=$outdir/
+               outdir=$outdir/
+fi
+
+if [[ $extension != "" ]]
+       then
+               filetype="filetype:$extension"
 fi
 
-urls=`curl -silent https://duckduckgo.com/html/\?q\=site:$site%20filetype:$filetype | grep "${filetype}$" | tr -d ' \t\r' | grep -v '^[0-9]' | awk '{print "http://" $0}'`
+urls=`curl -silent https://duckduckgo.com/html/\?q\=site:$site%20$filetype | grep "$extension$" | tr -d ' \t\r' | grep -v '^[0-9]' | awk '{print "http://" $0}'`
 
 for url in $urls; do
        wget --cut-dirs=100 -P $outdir $url