Linux - Argumentos do Script
Ao executar um script, é possível passar alguns argumentos pela linha de comando. Dentro do script, esses argumentos estão disponíveis através de números de argumentos. Por exemplo, o primeiro argumento está disponível através de $1
, o segundo argumento através de $2
, e assim por diante. Também há um identificador especial, $0
, que sempre armazena o nome do script.
Vamos definir o seguinte script hello
:
#!/bin/bash echo $0 exit 0
Neste caso, o script exibe no console o nome do próprio script. Vamos executar o script:
programicio@Programicio:~$ bash hello hello
Agora, vamos passar um argumento para o script e utilizá-lo. Para isso, modificamos o script da seguinte forma:
#!/bin/bash # o script aceita um argumento e o exibe no console echo $1 exit 0
Neste caso, estamos exibindo o primeiro argumento no console usando o identificador $1
. Vamos executar o script passando um argumento:
programicio@Programicio:~$ bash hello Tom Tom
Os argumentos são especificados após o nome do script, separados por espaço. Aqui, passamos apenas um argumento, "Tom". Se for necessário passar uma string como argumento, onde as palavras são separadas por espaços, essa string deve ser colocada entre aspas:
programicio@Programicio:~$ bash hello "Hello www.programicio.com" Hello www.programicio.com
Da mesma forma, é possível passar um número maior de argumentos. Por exemplo:
#!/bin/bash # o script aceita argumentos e os exibe no console ARG1=$1 ARG2=$2 ARG3=$3 SCRIPTNAME=$0 echo The name of this script is $SCRIPTNAME echo The first argument is $ARG1 echo The second argument is $ARG2 echo The third argument is $ARG3 exit 0
Neste caso, passamos três argumentos. Vamos testar o script:
programicio@Programicio:~$ bash hello Tom 39 tom@mimimail.com The name of this script is hello The first argument is Tom The second argument is 39 The third argument is tom@mimimail.com programicio@Programicio:~$
Identificadores Especiais
Além de $0
, é possível usar vários identificadores especiais dentro do script:
$#
: número de argumentos$@
e$*
: string com os argumentos
Vamos usar esses identificadores no script:
#!/bin/bash echo the number of arguments is $# echo the arguments are $@ echo the arguments are $* exit 0
Vamos chamar o script:
programicio@Programicio:~$ bash hello a b c the number of arguments is 3 the arguments are a b c the arguments are a b c