Passar nome de arquivo para scripts com funcionalidade de preenchimento automático

1

Normalmente, quando uso nomes de arquivos em um script, menciono o nome do arquivo explicitamente no script, por exemplo, conforme mostrado abaixo,

#!/bin/bash ... echo "<dynamic text>" >> process_log.log ...

Eu queria saber se é possível passar o nome do arquivo para um script como o seguinte:

./script_name.sh file_1 file_2 file_3

com funcionalidade de preenchimento automático de guias. (Isso seria muito conveniente!)

Alguém tem experiência com isso? Obrigado.

read é uma maneira de perguntar alguns dados de entrada, mas eu sinto que é complicado para várias entradas e para textos longos.

    
por ankit7540 16.12.2016 / 17:45

1 resposta

1

OK, esse script aceita um argumento obrigatório e dois argumentos opcionais. Ele sairá (com um erro) se você não especificar pelo menos um argumento. Não faz muito além disso!

#!/bin/sh
if [ -z "$1" ]
then
    echo "Missing filename: 1"
    exit 1
else
    file1=$1
fi
file2="$2"
file3="$3"
printf "File 1: %s\n" "$file1"
printf "File 2: %s\n" "$file2"
printf "File 3: %s\n" "$file3"
cat "$file1"

Salve como (por exemplo) script_name.sh e defina como executável:

chmod u+x script_name.sh

Em seguida, execute-o assim:

./script_name.sh script_name.sh script_name.sh script_name.sh

Ele deve exibir os três argumentos que você passou (que são todos "script_name.sh") e, em seguida, cat .

Quando eu tentei isso, eu experimentei a conclusão da tabulação - ele funcionava bem automaticamente (mostrava arquivos e diretórios quando eu pressionava o Tab ). Eu não fiz nada para fazer isso. No entanto, se você quiser apenas deixar seu script funcionar com determinados arquivos complete -f -X '!*.png' script_name.sh - isso mostrará apenas arquivos ".png" quando você pressionar a tecla Tab .

    
por 16.12.2016 / 18:15