Ajuda a entender o comando cut no script

2

Em um script bash, existem as seguintes duas linhas:

ipaddr=$0
segments='echo $ipaddr | cut --delimiter=. --fields=2-3 --output-delimiter=/'

Eu não sei como interpretar a segunda linha onde a variável $segments é criada.

Como esta parte funciona?

    
por user785099 24.01.2013 / 20:24

2 respostas

6

Aqui está a análise.

O eco irá mostrar o que estiver na variável $ ipaddr

echo $ipaddr

Isso é canalizado até o seguinte comando.

O corte pode ser usado para delimitar (isto é, dividir em partes) uma string. Um parâmetro para cortar informa onde "cortar" a string (aqui está em pontos, portanto, se o endereço IP for do seguinte formato: "198.51.100.0", ele será dividido em 198 51 100 e 0). Outro parâmetro informa quais partes, da cadeia que cortou, devem ser tomadas. Aqui estão as partes 2 e 3. No exemplo ip que eu dei acima, isso daria 51 e 100. Um parâmetro final diz para juntar as partes que selecionou (partes 2 e 3) com um novo delimitador (aqui uma barra ). O resultado seria 51/100.

cut --delimiter=. --fields=2-3 --output-delimiter=/

O resultado de tudo isso (no meu exemplo sendo 51/100) é salvo dentro da variável de segmentos. Sempre que você executar o seguinte:

somevar='somecommand'

o que quer que esteja entre os backticks é executado. O que ele retorna é passado para o lado esquerdo do sinal de igual.

    
por 24.01.2013 / 20:35
1

Vamos dissecar isso.

echo $ipaddr

Supondo que este é um endereço IPv4 escrito em decimal, isso dá algo como 100.90.80.70. Isso nós canalizamos para

'cut --delimiter=. --fields=2-3 --output-delimiter=/

Isto irá cortar cada uma de suas linhas de entrada (apenas uma neste caso) em '.', então agora temos 100 90 80 70. Ele seleciona os campos 2 a 3 daqui, ou seja, nós mantemos 90 80. Isto está escrito fora, separados por '/'. O resultado é 90/80, como mostra uma experiência rápida.

Acima, principalmente de olhar a página de manual para o corte (1), minha memória não é tão boa .

    
por 24.01.2013 / 20:41