Pergunta

Eu preciso entender o seguinte linha de código:

BIN_DIR=`grep BIN_DIR= $SMLCM | head -1`

onde $SMLCH contém um caminho

Isto é o que eu entendi até agora:

  • grep irá produzir algumas cordas (s), caminhos possíveis. O que faz grep fazer com BIN_DIR=?

  • os pathes são passados ??para a cabeça e todos os arquivos dentro dos caminhos serão utilizados para extrair a sua primeira linha

  • algo é avaliada (o que exatamente?) E armazenados em BIN_DIR

Com os melhores cumprimentos,

Simon

Foi útil?

Solução

Isso irá encontrar todos occureneces da string literal "BIN_DIR =" no arquivo especificado na variável $ SMLCM e só tomar a primeira linha de que a produção e atribuí-la a BIN_DIR.

Note que este pode não funcionar da maneira que você quer que ele uma vez que está se assiggned para BIN_DIR alguma string como "BIN_DIR = blah", isto é, pode ter o mesmo efeito como o seguinte:

BIN_DIR = "BIN_DIR = blah"

Outras dicas

  • grep irá corresponder cada linha contendo BIN_DIR = dentro o conteúdo do arquivo nomeado pela var $ SMLCM
  • cabeça vai tomar a primeira linha
  • esta linha (o resultado de todos os comandos inseridos os carrapatos traseira) é re-atribuída a BIN_DIR

Isto irá extrair única o valor de $BIN_DIR a primeira vez que aparece no arquivo apontado por $SMLCM e atribuí-lo ao $BIN_DIR variável no script atual:

BIN_DIR=$(sed -n 's/^BIN_DIR=\(.*\)$/\1/p' $SMLCM | head -n 1)
  • sed -n: executar o editor de fluxo e não imprimir cada linha como aparece
  • s/: substituto
  • ^BIN_DIR=: uma linha que começa ( "^") com o texto "BIN_DIR ="
  • \(.*\)$: e extremidades ( "$") com um grupo ( "\ (\)") de zero ou mais ( "*") de quaisquer caracteres ( "")
  • /: substituir esse jogo com
  • \1: o conteúdo da primeira (neste caso, apenas) grupo
  • /p: terminar a substituição e imprimir os resultados
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top