771 votes

Comment puis-je savoir le nom de fichier du script dans un script Bash ?

Comment puis-je déterminer le nom du fichier de script Bash à l’intérieur du script lui-même ?

Comme si mon script se trouve dans le fichier `` , puis comment ferait elle pour afficher le message « Vous exécutez runme.sh » sans coder en dur qui ?

795voto

Tanktalus Points 7940
<pre><code></code><p>Pour la lecture grâce à un lien symbolique, qui n’est généralement pas ce que vous voulez (généralement ne vouloir confondre l’utilisateur de cette façon), essayez :</p><pre><code></code></pre><p>L’OMI, qui va produire la sortie confuse. " J’ai couru foo.sh, mais il est dit que je suis sous bar.sh ! ? Doit être un bug ! » Par ailleurs, un des buts d’avoir nommé différemment les liens symboliques est de fournir des fonctionnalités différentes selon le nom qu'il s’appelle (pensez gzip mais gunzip sur certaines plateformes).</p></pre>

315voto

Bill Hernandez Points 691
# ------------- SCRIPT ------------- #

#!/bin/bash

echo
echo "# arguments called with ---->  ${@}     "
echo "# \$1 ---------------------->  $1       "
echo "# \$2 ---------------------->  $2       "
echo "# path to me --------------->  ${0}     "
echo "# parent path -------------->  ${0%/*}  "
echo "# my name ------------------>  ${0##*/} "
echo
exit

# ------------- APPELÉ ------------- #

# Avis sur la ligne suivante, le premier argument est appelée à l'intérieur du double, 
# et les guillemets simples, puisqu'il contient deux mots

$ /misc/shell_scripts/check_root/show_parms.sh "'bonjour'" "'william'"

# ------------- RÉSULTATS ------------- #

# les arguments appelé avec ---> 'bonjour' 'william'
# $1 ----------------------> 'bonjour, il y'
# $2 ----------------------> 'william"
# chemin vers moi --------------> /misc/shell_scripts/check_root/show_parms.sh
# chemin d'accès parent -------------> /misc/shell_scripts/check_root
# mon nom -----------------> show_parms.sh

# ------------- FIN ------------- #

229voto

Dimitre Radoulov Points 9185

Avec bash > = 3 les ouvrages suivants :

129voto

Zainka Points 151

$BASH_SOURCE donne la bonne réponse lorsque le script d’approvisionnement. Toutefois, cela inclut le chemin d’accès afin d’obtenir le nom de fichier de scripts uniquement, utilisez

$(basename $BASH_SOURCE)

72voto

Josh Lee Points 53741

Si le nom du script comporte des espaces, une façon plus robuste consiste à utiliser ou pour empêcher le nom de se mutilé ou interprétée en aucune façon. En général, il est conseillé de toujours citer les noms de variables dans le shell.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X