Scotch Linux arbre1 fly maison ScotchLinux... arbre

Remarque: Ici nous utilisons la commande getopt et je tiens à attirer votre atention sur le "$*" qui m'a value bien soucis pour parser les arguments d'une commande (cas: -a). Je vous recommande ça page de manuel (man getopt)


#!/bin/bash
function args_needed(){
echo "Usage: idesk-new-icon.sh -i icon -c command -a \'arguments\' -o output"
exit
}
function badfile(){
echo "bad file: '$1'"
exit
}
test ${#*} -lt 6 && args_needed
getopt \
--quiet-output \
--name "idesk-new-icon.sh" \
--shell bash \
--option "i:c:a:o:" \
-- "$*"
ARGV=0
ARGC=("$@")
while [ $ARGV -lt ${#*} ]; do
case ${ARGC[$ARGV]} in
"-i")
test -f "${ARGC[$(($ARGV+1))]}" || badfile "${ARGC[$(($ARGV+1))]}"
ICON="${ARGC[$(($ARGV+1))]}"
ARGV=$(($ARGV+2))
;;
"-c")
if [-n "$(echo "${ARGC[$(($ARGV+1))]}" | grep -e "^\/")" ]; then
test -x "${ARGC[$(($ARGV+1))]}" &&
COMMAND="${ARGC[$(($ARGV+1))]}" ||
badfile "${ARGC[$(($ARGV+1))]}"
else
COMMAND="$(which "${ARGC[$(($ARGV+1))]}")"
test -z "$COMMAND" && badfile "${ARGC[$(($ARGV+1))]}"
fi
COMMAND="$COMMAND"
ARGV=$(($ARGV+2))
;;
"-a")
ARGUMENTS="${ARGC[$(($ARGV+1))]}"
ARGV=$(($ARGV+2))
;;
"-o")
test -f "${ARGC[$(($ARGV+1))]}" && badfile "${ARGC[$(($ARGV+1))]} exist."
OUTPUT="${ARGC[$(($ARGV+1))]}"
ARGV=$(($ARGV+2))
;;
esac
done
for i in "table Icon" " Caption:" " Command: $COMMAND $ARGUMENTS" " Icon: $ICON" " Width: 48" " Height: 48" " X: 15" " Y: 15" "end" ;do
echo "$i" >> $OUTPUT
done