2009-09-22 7 views
0

Мне нужно понять следующую строку кода:линия Баш кода из файла .configure

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

где $SMLCH содержит путь

Это то, что я понял до сих пор:

  • grep произведет несколько строк, возможных путей. Что делает grep с BIN_DIR=?

  • на трактах передаются в голове и все файлы в пути будут использоваться для извлечения первой линии

  • что-то оценивается (что именно?) И хранятся в BIN_DIR

Лучшими С уважением,

Simon

+0

Это не должно быть сообщество wiki. – chaos

+0

ОК, но нельзя отменить – SimonSalman

ответ

1

найдет все occureneces из символьной строки «bin_dir =» в файле, указанном в переменной $ SMLCM и только взять первую строку этого вывода и присвоить его bin_dir.

Обратите внимание, что это не может работать так, как вы хотите его так, Что получает assiggned к bin_dir некоторая строка, как «bin_dir = бла», то есть он может иметь тот же эффект, как и следующее:

bin_dir =» bin_dir = бла»

1
  • гр ep будет соответствовать каждой строке, содержащей BIN_DIR = внутри содержимого файла с именем var $ SMLCM
  • head займет первую строку
  • Эта строка (результат команд внутри обратных тиков) переустанавливается bin_dir
0

Это извлечет только Значение $BIN_DIR в первый раз появляется в файле, на который указывает $SMLCM и присвоить его переменной $BIN_DIR в текущем сценарии:

BIN_DIR=$(sed -n 's/^BIN_DIR=\(.*\)$/\1/p' $SMLCM | head -n 1) 
  • sed -n: запустить редактор потока и не печатает каждую строку, как она появляется
  • s/: заменить
  • ^BIN_DIR=: строку, которая начинается ("^") с текстом "bin_dir ="
  • \(.*\)$: и заканчивается ("$") с группой ("\ (\)") нулевой или более ("*") любых символов (".«)
  • /: заменить этот матч с
  • \1: содержание первого (в данном случае, только) группы
  • /p: завершить замену и распечатать результаты