GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser les booléens dans la coquille de poisson ?

Je suis passé au fish coque et très satisfait. Je n'ai pas compris comment gérer les booléens. J'ai réussi à écrire config.fish qui exécute tmux sur ssh (voir :Comment puis-je démarrer tmux automatiquement dans fish shell lors de la connexion à un serveur distant via ssh) mais je ne suis pas satisfait de la lisibilité du code et je souhaite en savoir plus sur fish shell (j'ai déjà lu le tutoriel et consulté les références). Je veux que le code ressemble à ça (je sais que la syntaxe n'est pas correcte, je veux juste montrer l'idée) :

set PPID (ps --pid %self -o ppid --no-headers) 
if ps --pid $PPID | grep ssh 
    set attached (tmux has-session -t remote; and tmux attach-session -t remote) 
    if not attached 
        set created (tmux new-session -s remote; and kill %self) 
    end 
    if !(test attached -o created) 
        echo "tmux failed to start; using plain fish shell" 
    end 
end

Je sais que je peux stocker $status es et comparez-les avec test comme des entiers mais je pense que c'est moche et encore plus illisible. Le problème est donc de réutiliser $status es et utilisez-les dans if et test .

Comment puis-je réaliser quelque chose comme ça ?

Réponse acceptée :

Vous pouvez structurer cela comme une chaîne if/else. Il est possible (bien que peu maniable) d'utiliser begin/end pour mettre une instruction composée comme condition if :

if begin ; tmux has-session -t remote; and tmux attach-session -t remote; end
    # We're attached!
else if begin; tmux new-session -s remote; and kill %self; end
    # We created a new session
else
    echo "tmux failed to start; using plain fish shell"
end

Un style plus agréable est les modificateurs booléens. début/fin remplacent les parenthèses :

begin
    tmux has-session -t remote
    and tmux attach-session -t remote
end
or begin
    tmux new-session -s remote
    and kill %self
end
or echo "tmux failed to start; using plain fish shell"

(Le premier début/fin n'est pas strictement nécessaire, mais améliore la clarté de l'OMI.)

La factorisation des fonctions est une troisième possibilité :

function tmux_attach
    tmux has-session -t remote
    and tmux attach-session -t remote
end

function tmux_new_session
    tmux new-session -s remote
    and kill %self
end

tmux_attach
or tmux_new_session
or echo "tmux failed to start; using plain fish shell"

Linux
  1. Comment utiliser la commande Linux Rsync (synchronisation à distance)

  2. Comment utiliser Tmux + Cheat Sheet

  3. Comment utiliser les alias du shell sous Linux

  4. Comment utiliser la commande su sur adb shell ?

  5. Comment installer Fish Shell sur AWS Linux

Comment installer et utiliser ZSH Shell sous Linux

Comment utiliser les extensions GNOME Shell [Guide complet]

Comment utiliser SSH pour se connecter à un serveur distant

Comment installer et utiliser Nu Shell sous Linux

Comment utiliser if-else dans les scripts shell ?

Comment utiliser Linux Bash Shell dans Windows 10 ?