encontrar opção como argumento de linha de comando

encontrar opção como argumento de linha de comando

Eu tenho um problema com meu script. Estou tentando escrever um script, onde a opção de comando find é o primeiro argumento da linha de comando.

No meu script eu tenho algo como

find_option=$1

find $find_option

O problema é que, por exemplo, para a opção find *.txta saída é apenas o primeiro arquivo de texto no meu diretório, mas eu gostaria de encontrar todos esses arquivos.

Obrigado

Responder1

Supondo que você dê ao seu script o padrão assim,

./myscript '*.txt'

(as aspas são necessárias para evitar a expansão do padrão para nomes no diretório atual), então você pode escrever seu script assim:

#!/bin/sh

name_pattern=$1

find . -name "$name_pattern"

Isso pega o primeiro argumento da linha de comando e o usa em uma chamada para find, filtrando os nomes encontrados no diretório atual e abaixo pelo padrão fornecido.

Observe que aqui também você precisa citar a variável expansion of $name_patternna chamada to findpelo mesmo motivo que precisou citá-la na linha de comando ao chamar seu script, ou seja, para evitar expandir o padrão para nomes no diretório atual.

informação relacionada