Como posso usar o símbolo $?

2

Eu sei que provavelmente há muitos fóruns sobre esse símbolo especificamente, mas eu quero saber como posso usar $ em chamadas. Eu sei fazer

echo $USER

mas como eu poderia expandir meu conhecimento desse símbolo, se eu quisesse executar algo como o nmap ao encontrar a sub-rede ou se eu quisesse criar um arquivo porque eles não funcionam:

 mkdir $IP
 mkdir $gateway

 nmap $ip
 nmap $subnetwork

Você pode definir alguns exemplos de como usar esse símbolo para criar arquivos ou obter informações?

    
por hello moto 26.03.2018 / 15:01

1 resposta

7

Geral

O uso básico de $ como em $USER é dizer ao shell que você está falando de uma variável de shell.

Veja man bash e vá até (ou pule para)

  • Special Parameters
  • EXPANSION
  • Parameter Expansion

Mas pode ser um pouco difícil digerir as descrições em man bash . Você pode achar mais fácil ler algum tutorial , que você pode encontrar pela Internet, por exemplo

Exemplos

A variável shell deve ser definida (geralmente no shell ou especificamente por você). Por exemplo USER é uma variável geral, mas subnet não está definido no meu computador, então eu teria que declará-lo,

subnet="some-text-or-number-string"

Então, ele pode ser visto por

echo "$subnet"

e usado em outros comandos (como você deseja usá-lo).

IP não está definido no meu computador, mas as variáveis padrão usam letras maiúsculas, por isso é uma boa ideia usar letras minúsculas para suas próprias variáveis para evitar conflitos.

ip=192.168.0.2

Você pode verificar isso com

echo "$ip"

e remova-o com

unset ip

Adicionando exemplos de acordo com as dicas de @Terrance e @ Jo-ErlendSchinstad

O comando que você está procurando com nmap pode ser feito com ip route da seguinte forma:

nmap -sP $(ip route | grep kernel | awk '{print $1}')

em que $(a command line) permite usar a [padrão] saída de uma linha de comando no contexto do shell, explicado com o seguinte exemplo mais simples,

myusername=$(whoami)

Que pode ser visto por

echo $myusername

Uma calculadora simples para inteiros é criada com parênteses duplos, assim,

$ echo $((1+2))
3

$ r=5
$ area=$((r**2 * 314 / 100))
$ echo "the circle's area is approx. = $area"
the circle's area is approx. = 78
    
por sudodus 26.03.2018 / 15:28