Bonjour
J'ai besoin de recuperer le nom du script que je lance ex ./toto.sh il me faut toto
J'arrive à le faire en deux lignes, mais pas en une seule
SVP
Merci
Code:
1
2
3
4
5
6 #/bin/bash echo 'arg:'$0 b=${0##*/} c=${b/%.*} echo $c
Version imprimable
Bonjour
J'ai besoin de recuperer le nom du script que je lance ex ./toto.sh il me faut toto
J'arrive à le faire en deux lignes, mais pas en une seule
SVP
Merci
Code:
1
2
3
4
5
6 #/bin/bash echo 'arg:'$0 b=${0##*/} c=${b/%.*} echo $c
Bonjour,
:ptdr:Code:
1
2
3
4 #/bin/bash echo "arg: $0" b="${0##*/}"; c="${b/%.*}" #Voilà! une seule ligne. :) echo "$c"
que veux-tu de plus ?
utiliser des commandes externes pour si peu, je ne vois pas l'intérêt.
Bonjour
Me passer de b et c avoir une seule , car je vais le passer en argument a un programme Java
Salut,
Et la commande basename ne ferait-elle pas l'affaire ?
Code:
1
2
3
4
5 $ cat foo.sh #! /bin/bash echo "Affiche \$0 : "$0 echo -e "Affiche basename : $(basename -s .sh $0)"
Code:
1
2
3 $ ./foo.sh Affiche $0 : ./foo.sh Affiche basename : foo
;)Code:
1
2 $ basename -s .sh ./foo.sh foo
et alors ? tu lui donnes "$c". en quoi c'est gênant ?Citation:
je vais le passer en argument a un programme Java
je te le redis, je préfère encore tout faire en bash, plutôt que d'appeler une commande externe.
Fun...
Code:
1
2
3
4 $ cat /tmp/foo.sh #!/bin/bash echo "Affiche \$0 : "$0 [[ $0 =~ ^.*/(.*)\..* ]] && echo "${BASH_REMATCH[1]}"
Code:
1
2
3 $ /tmp/foo.sh Affiche $0 : /tmp/foo.sh foo
Bonjour
Merci à tous