Comment appeler une fonction définie.bashrc de la coquille?
Dans mon .bashrc, j'ai une fonction appelée bonjour:
function hello() {
echo "Hello, !"
}
je veux pouvoir invoquer hello () depuis le shell comme suit:
$ hello Lloyd
Et obtenir la sortie:
> Hello, Lloyd!
Quel est le truc?
(la vraie fonction que j'ai en tête est plus compliquée, bien sûr.)
EDIT: C'est vraiment causé par une erreur de syntaxe dans la fonction, je pense! : (
function coolness() {
if[ [-z ""] -o [-z ""] ]; then
echo "Usage: [sub_package] [endpoint]";
exit 1;
fi
echo "Hi!"
}
5 réponses
le test dans votre fonction ne fonctionnera pas - vous ne devriez pas avoir de crochets autour des clauses-z, et il devrait y avoir un espace entre si et le crochet ouvert. Il faut lire:
function coolness() {
if [ -z "" -o -z "" ]; then
echo "Usage: [sub_package] [endpoint]";
exit 1;
fi
echo "Hi!"
}
Vous pouvez exporter des fonctions. Dans votre ~/.bashrc
le fichier après avoir défini la fonction, ajouter export -f functionname
.
function hello() {
echo "Hello, !"
}
export -f hello
alors la fonction sera disponible à l'invite shell et aussi dans d'Autres scripts que vous appelez de là.
Modifier:
les parenthèses dans les énoncés conditionnels de Bash ne sont pas des parenthèses, ce sont des commandes. Ils doivent avoir des espaces autour d'eux. Si vous voulez grouper les conditions, utilisez les parenthèses. Voici votre fonction:
function coolness() {
if [ -z "" -o -z "" ]; then
echo "Usage: [sub_package] [endpoint]";
exit 1;
fi
echo "Hi!"
}
une meilleure façon d'écrire ce conditionnel est:
if [[ -z "" || -z "" ]]; then
parce que les doubles crochets offrent plus de possibilités que les simples.
incluez dans votre script la ligne
source .bashrc
source construire ça devrait marcher!
tout changement apporté à .bashrc
n'entrera en vigueur qu'au cours d'une nouvelle session de terminal. Si vous voulez appliquer les modifications à votre session de terminal actuelle, vous devez demander au shell de relire le .bashrc
. Le plus court chemin à pour cela est d'utiliser le .
commande, qui est synonyme de source
:
[user@linuxPc]$ . ~/.bashrc