Em um shell Linux, o que o eco $ 1 deve fazer?

11

Eu faço um echo $1, ele imprime qual é o shell de login padrão usado.

Mas para a echo $2frente, tudo o que recebo é uma nova linha. Por que é que?

lazer
fonte

Respostas:

21

$ 1 (ou $ 2, $ 3 ...) deve ser o argumento dado a algum script.

Aqui está um exemplo de script:

#!/bin/bash

echo "\$1 is now $1"
echo "\$2 is now $2"
echo "\$3 is now $3"

E o exemplo de saída

jaba@lappy:/tmp$ ./example.sh 
$1 is now 
$2 is now 
$3 is now 
jaba@lappy:/tmp$ ./example.sh 1 2 3
$1 is now 1
$2 is now 2
$3 is now 3
Janne Pikkarainen
fonte
1
E $ 0 é o nome do scipt que está sendo executado, análogo ao argv.
Benjamin Bannier
4

$ 1 é o argumento passado para o shell script.

Suponha que você corra

./myscript.sh hello 123 

então

$ 1 será olá

US $ 2 serão 123

Mukesh Chapagain
fonte
3

No seu caso, $ 1 imprime o shell de login padrão usado porque esse argumento foi passado para o script que executa seu shell de login. Mas se você escrever e executar seu próprio script na sessão atual, $ 1, $ 2, ... serão parâmetros que você enviar para o seu script.

Mikhail Chernykh
fonte