我需要理解以下代码行:
BIN_DIR=`grep BIN_DIR= $SMLCM | head -1`
where$SMLCH
包含路径
这是我到目前为止所理解的:
grep
将产生一些字符串,可能的路径。grep 有什么作用BIN_DIR=
?路径被传递给 head 并且路径中的所有文件都将用于提取它们的第一行
某些东西被评估(究竟是什么?)并存储在
BIN_DIR
此致,
西蒙
我需要理解以下代码行:
BIN_DIR=`grep BIN_DIR= $SMLCM | head -1`
where$SMLCH
包含路径
这是我到目前为止所理解的:
grep
将产生一些字符串,可能的路径。grep 有什么作用BIN_DIR=
?
路径被传递给 head 并且路径中的所有文件都将用于提取它们的第一行
某些东西被评估(究竟是什么?)并存储在BIN_DIR
此致,
西蒙
这将在 $SMLCM 变量中指定的文件中找到文字字符串“BIN_DIR=”的所有出现,并且只获取该输出的第一行并将其分配给 BIN_DIR。
请注意,这可能无法按您希望的方式工作,因为分配给 BIN_DIR 的是一些字符串,例如“BIN_DIR=blah”,它可能具有与以下相同的效果:
BIN_DIR="BIN_DIR=blah"
这将仅提取$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
: 完成替换并打印结果