GNU/Linux >> Linux Esercitazione >  >> Linux

Come impostare un parametro opzionale??

Chiuso . Questa domanda è basata sull'opinione. Attualmente non accetta risposte.

Vuoi migliorare questa domanda? Aggiorna la domanda in modo da poterla rispondere con fatti e citazioni modificando questo post.

Chiuso 7 anni fa.


Migliora questa domanda

Supponiamo che tu abbia il seguente problema:

A seconda che uno script venga eseguito o meno all'interno di una pipe, vuoi aggiungere il -print0 parametro da find .

Mi vengono in mente almeno due modi per farlo:

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

Oppure

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

C'è un modo migliore per farlo? La domanda è per bash , ma soluzioni per altre shell o sh portatili/standard anche le soluzioni sarebbero le benvenute.

Risposta accettata:

Il primo non funzionerà come se $null_terminated è vuoto o non impostato, find si lamenterà di quell'argomento aggiuntivo vuoto.

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

Funzionerebbe ma solo se $null_terminated non contiene caratteri jolly o caratteri di IFS.

Farlo:

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

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

non avrebbe problemi.

Bourne/POSIXly, potresti fare:

imposta -- trova . ! -nome . -fesso ! ( "[email protetta]" )[ -p /dev/stdin ] &&set -- "[email protetta]" -exec printf '%s
Linux
  1. Come configurare un proxy inverso Nginx

  2. Come trovare un file in Linux

  3. Come impostare un tracker Bittornado?

  4. Linux / UNIX:come trovare i file con SUID/SGID impostato

  5. Come trovare lo stato di wlan0?

Come trovare l'indirizzo IP in Kali Linux

Come trovare l'indirizzo IP in Linux

Come impostare o modificare il nome host su Linux

Come trovare il nome host in Linux

Come installare e configurare SeedDMS

Come trovare file in Debian