line = 'awk'($0 !~ /^#/ && $7 ~ /^'"$2"'$/)
{print $1 ,$2,$3,$3,$4,$5,$6,$7,$8}' $srctree/boards.cfg;'
这段shell脚本实现的功能是,在$srctree/boards.cfg文件中逐行查找和表达式($0 !~ /^#/ && $7 ~ /^'"$2"'$/)中相匹配的行,如果找到就执行{}中的语句。awk未指定,则默认字段分隔符为空格
$0 :代表当前行
$n :代表第n个字段(n>0)
!~ :表示不匹配
~ :表示匹配
/ / :匹配代码段
^# :以#为开头
abc$ :以abc结尾
^abc$: 字段为abc
所以这段脚本意思是:查找$srctree/boards.cfg文件中不以“#”开头的行,并且这一行的第七个字段必须和这个脚本文件传进的第2个参数匹配。如果条件成立,将这一行的第一个至第八个字段存放至line中。
小知识:
if [ str1 = str2 ] 当两个串有相同内容、长度时为真
if [ str1 != str2 ] 当串str1和str2不等时为真
if [ -n str1 ] 当串str1的长度大于0时为真(串非空)
if [ -z str1 ] 当串str1的长度为0时为真(空串)
if [ str1 ] 当串str1为非空时为真
shell 中利用 -n 来判定字符串非空