¿Cómo usar un argumento opcional?

Estoy escribiendo este script para que funcione como un borrador rápido. Abre mi editor de text con date y hora, por lo que puedo insert algunos borradores de text para savelos rápidamente.

1. Al principio me gustaría agregar la date y la hora al comienzo del file en lugar de al final, como lo hace el >> $file . Pero supongo que no es tan fácil, así que esta no es mi prioridad.

2. Definí un argumento $1 . Si tengo pocas palabras para insert, creo que es mejor ejecutar el draft "foo foo" lugar de abrir el editor para escribir unas pocas palabras.

Bueno, está funcionando pero con el argumento de que la última línea no es necesaria. Entonces me gustaría hacer que sea una línea condicional. Si no paso ninguna discusión, entonces abra el editor; si no ninguno

¿Alguna ayuda para mejorar mi script?

 #!/bin/bash file=rascunho folder=/home/$USER/ #linha=$(wc -l < $file) content=$1 #rm $folder$file printf "\n\n" >> $file #echo " " >> $file echo "------< $(date "+%b %d, %Y - %H:%M:%S") >------" >> $file echo "$1" >> $file exec leafpad $file 

Puede usar if para verificar. Por ejemplo, puede hacer algo como esto en lugar de las dos últimas líneas en su secuencia de commands de arriba:

 if [ -n "$1" ]; then echo "$1" >> $file else exec leafpad $file fi 

Esto dice: si el primer argumento no es una cadena vacía (esto es lo que -n testing), entonces ejecuta echo , sino ejecuta leafpad .

Puedes leer más sobre esto aquí:

Espero que esto ayude.

Para ser más genérico, use "$@" lugar de "$1" – esto le permite escribir

 draft use many words without quoting. 
 #!/bin/bash file=rascunho printf "\n\n------< %s >------\n" "$(date "+%b %d, %Y - %T")" >> $file # if any arguments were given, write them to the file, else edit the file if [[ $# -gt 0 ]]; then echo "$@" >> $file else exec leafpad $file fi 

Para escribir una línea al principio del file, puede usar una construcción de agrupación:

 { echo "first line"; cat $file; } > temp && mv temp $file