Como lidar com argumentos de linha de comando em um script Bash

How Handle Command Line Arguments Bash Script



Em muitos casos, os scripts bash requerem valores de argumento para fornecer opções de entrada para o script. Você pode manipular argumentos de linha de comando em um script bash de duas maneiras. Um é usando variáveis ​​de argumento e outro está usando getopts função. Como você pode lidar com os argumentos da linha de comando é mostrado neste tutorial.

Usando variáveis ​​de argumento:

A variável do argumento começa em $ 0. O nome do arquivo de script principal é armazenado em $ 0, que recebe valores de argumento de argumentos de linha de comando. Se dois argumentos forem passados ​​na linha de comando, os valores dos argumentos serão recebidos nas variáveis ​​$ 1 e $ 2 sequencialmente.







Exemplo -1: Enviando três valores numéricos como argumentos

Crie um arquivo bash e adicione o código a seguir. O script receberá três valores de argumento e os armazenará em $ 1, $ 2 e $ 3. Ele contará o número total de argumentos, imprimirá os valores dos argumentos com loop e sem loop. Por último, imprima a soma de todos os valores de argumento.



#! / bin / bash

# Contando o número total de argumentos
jogou fora 'Número total de argumentos: $ #'

# Lendo valores de argumento individualmente
jogou fora 'Valor do primeiro argumento: $ 1'
jogou fora 'Segundo valor de argumento: $ 2'
jogou fora 'Terceiro valor de argumento: $ 3'

# Lendo valores de argumento usando loop
paraargvalno '[email protegido]'
Faz
jogou fora -n '$ argval'
feito

# Adicionando valores de argumento
soma= $(($ 1+$ 2+$ 3))

# imprime o resultado
jogou fora -E ' nResultado da soma =$ soma'

Execute o arquivo bash com três valores de argumento numéricos.



$bashcmdline1.shcinquenta 35 quinze





Exemplo -2: Tomando o nome do arquivo como argumento

Crie um arquivo bash e adicione o seguinte código para contar o número total de caracteres de qualquer arquivo. Aqui, o nome do arquivo será passado como argumento da linha de comando.

#! / bin / bash
nome do arquivo=$ 1
totalchar=``banheiro -c $ filename``
jogou fora 'Número total de caracteres são$ totalchar'

Execute o script bash com o nome do arquivo como valor de argumento único e execute outro comando para verificar o número total de caracteres desse arquivo. Aqui, o arquivo employee.txt é usado como valor de argumento. O número total de caracteres do arquivo employee.txt é 204.



$bashcmdline2.sh employee.txt
$banheiro -cfuncionário.txt

Usando a função getopts:

Se você deseja armazenar dados em um banco de dados ou qualquer arquivo ou criar um relatório em um formato específico baseado em valores de argumentos de linha de comando, getopts função é a melhor opção para realizar a tarefa. É uma função embutida do Linux. Portanto, você pode usar facilmente essa função em seu script para ler dados formatados da linha de comando.

Exemplo -1: Lendo argumentos pela função getopts

Crie um arquivo bash e adicione o seguinte script para entender o uso de getopts função. A função ‘getopts’ é usada com o loop while para ler opções de argumento de linha de comando e valores de argumento. Aqui, são usadas 4 opções que são ‘I’, ‘n’, ‘m’ e 'E' . A instrução case é usada para combinar a opção particular e armazenar o valor do argumento em uma variável. Finalmente, imprima os valores da variável.

#! / bin / bash
enquanto getopts ':em mim:'nervoso;Faz
caso $ arg no
eu) EU IRIA=$ OPTARG;;
n) Nome=$ OPTARG;;
m) Data de fabricação=$ OPTARG;;
E) Data de validade=$ OPTARG;;
esac
feito
jogou fora -E ' n$ ID $ Name $ Manufacturing_date $ Expire_date n'

Execute o arquivo com as seguintes opções e valores de argumento. Aqui, p100 é o valor da opção -i, 'Bolo Quente' é o valor da opção -n, '01 -01-2018 ′ é o valor da opção -m e '06 -01-2018 ′ é o valor de - e opção.

$bashcmdline3.sh-eup001-n 'Bolo quente' -m '01 -01-2018 ' -E '06 -01-2018 '

Quando você precisa enviar valores simples em um script, é melhor usar variáveis ​​de argumento. Mas se você deseja enviar dados de forma formatada, é melhor usar a função getopts para recuperar os valores dos argumentos. Para mais informações veja o vídeo !