Bence bu, başarmak istediğiniz şeyin daha basit bir örneği olacak. Harici aletler kullanmaya gerek yoktur. Bash yerleşik araçlar sizin için işi yapabilir.
function DOSOMETHING {
while test $# -gt 0; do
case "$1" in
-first)
shift
first_argument=$1
shift
;;
-last)
shift
last_argument=$1
shift
;;
*)
echo "$1 is not a recognized flag!"
return 1;
;;
esac
done
echo "First argument : $first_argument";
echo "Last argument : $last_argument";
}
Bu, bayrakları kullanmanıza izin verir, böylece parametreleri hangi sırayla geçirirseniz geçirin, doğru davranışı elde edersiniz.
Misal :
DOSOMETHING -last "Adios" -first "Hola"
Çıktı :
First argument : Hola
Last argument : Adios
Bu işlevi profilinize ekleyebilir veya bir komut dosyasının içine koyabilirsiniz.
Teşekkürler!
Düzenleme: Bunu aa dosyası olarak kaydedin ve ardından şu şekilde yürütün yourfile.sh -last "Adios" -first "Hola"
#!/bin/bash
while test $# -gt 0; do
case "$1" in
-first)
shift
first_argument=$1
shift
;;
-last)
shift
last_argument=$1
shift
;;
*)
echo "$1 is not a recognized flag!"
return 1;
;;
esac
done
echo "First argument : $first_argument";
echo "Last argument : $last_argument";