GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo establecer un parámetro opcional?

Cerrado . Esta pregunta está basada en opiniones. Actualmente no está aceptando respuestas.

¿Quieres mejorar esta pregunta? Actualice la pregunta para que pueda responderse con hechos y citas editando esta publicación.

Cerrado hace 7 años.


Mejorar esta pregunta

Suponga que tiene el siguiente problema:

Dependiendo de si un script se ejecuta dentro de una canalización o no, desea agregar el -print0 parámetro a find .

Se me ocurren al menos dos formas de hacerlo:

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

O

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

¿Hay alguna manera mejor de hacer esto? La pregunta es para bash , pero soluciones para otros shells o portátiles/estándar sh las soluciones también serían bienvenidas.

Respuesta aceptada:

El primero no funcionará como si $null_terminated está vacío o no configurado, find se quejará de ese argumento extra vacío.

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

Funcionaría pero solo si $null_terminated no contiene caracteres comodín ni caracteres de IFS.

Haciéndolo:

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

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

no tendría el problema.

Bourne/POSIXly, podrías hacer:

establecer -- buscar . ! -nombre . -ciruela pasa ! ( "[correo electrónico protegido]" )[ -p /dev/stdin ] &&set -- "[correo electrónico protegido]" -exec printf '%s
Linux
  1. Cómo usar BUSCAR en Linux

  2. Cómo configurar un proxy inverso Nginx

  3. Cómo encontrar un archivo en Linux

  4. Linux/UNIX:Cómo encontrar archivos que tienen SUID/SGID configurado

  5. ¿Cómo encontrar el estado de wlan0?

Cómo encontrar la dirección IP en Kali Linux

Cómo encontrar la dirección IP en Linux

Cómo configurar o cambiar el nombre de host en Linux

Cómo encontrar el nombre de host en Linux

Cómo instalar y configurar SeedDMS

Cómo encontrar archivos en Debian