linha de código bash arquivo .configure
-
13-09-2019 - |
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 comBIN_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
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