GNU/Linux >> Tutoriels Linux >  >> Linux

Comment définir un paramètre facultatif ? ?

Fermé . Cette question est basée sur l'opinion. Il n'accepte pas de réponses actuellement.

Vous voulez améliorer cette question ? Mettez à jour la question afin qu'elle puisse être répondue avec des faits et des citations en éditant ce message.

Fermé il y a 7 ans.


Améliorer cette question

Supposons que vous ayez le problème suivant :

Selon qu'un script est exécuté dans un tube ou non, vous souhaitez ajouter le -print0 paramètre à find .

Je peux penser à au moins deux façons de procéder :

[[ -p '/dev/stdin' ]] && local null_terminated='-print0'
find -mindepth 1 -maxdepth 1 ! ( "${args[@]}" ) "$null_terminated"

Ou

    if [[ -p '/dev/stdin' ]]; then
        find -mindepth 1 -maxdepth 1 ! ( "${args[@]}" ) -print0
    else
        find -mindepth 1 -maxdepth 1 ! ( "${args[@]}" )
    fi

Y a-t-il une meilleure façon de faire cela? La question est pour bash , mais des solutions pour d'autres shells ou portables/standard sh des solutions seraient également les bienvenues.

Réponse acceptée :

Le premier ne fonctionnera pas comme si $null_terminated est vide ou non défini, find se plaindra de cet argument supplémentaire vide.

find -mindepth 1 -maxdepth 1 ! ( "${args[@]}" ) $null_terminated

Fonctionnerait mais seulement si $null_terminated ne contient aucun caractère générique ou caractère IFS.

Faire :

if [[ -p '/dev/stdin' ]]; then
  extra_args=(-print0)
else
  extra_args=()
fi

find -mindepth 1 -maxdepth 1 ! ( "${args[@]}" ) "${extra_args[@]}"

n'aurait pas le problème.

Bourne/POSIXly, vous pourriez faire :

set -- trouver . ! -Nom . -prune ! ( "[email protected]" )[ -p /dev/stdin ] &&set -- "[email protected]" -exec printf '%s
Linux
  1. Comment configurer un proxy inverse Nginx

  2. Comment trouver un fichier sous Linux

  3. Comment configurer un tracker Bittornado ?

  4. Linux / UNIX :Comment trouver des fichiers dont le SUID/SGID est défini

  5. Comment puis-je trouver le numéro de ligne dans Bash lorsqu'une erreur s'est produite ?

Comment trouver une adresse IP dans Kali Linux

Comment trouver une adresse IP sous Linux

Comment définir ou modifier le nom d'hôte sous Linux

Comment trouver le nom d'hôte sous Linux

Comment installer et configurer SeedDMS

Comment trouver des fichiers dans Debian