我对bash脚本很新,并试图阅读一个脚本,发现一些线路真的很混乱,很难在其他地方检查 脚本的一部分是这样的:
normbiasread=`mas_param get tes_bias_normal`
normval=`echo "$normbiasread" | grep -o '\([0-9]*\)\s' | head -1
normval="${normval/ /}"
第一行是从.config文件中读取数组,第二行是选择数字+空格模式,只选择第一个组件。 但我对第3行感到困惑,因为normval似乎已经被定义为第二行的数字,我不知道“$ {normval / /}”是什么意思
答案 0 :(得分:0)
这是参数替换。这是一个有很好解释的页面:https://www.tldp.org/LDP/abs/html/parameter-substitution.html 所以 这是相关的一点:
${var/Pattern/Replacement}
Pattern的第一次匹配,在var中替换为Replacement。
如果省略Replacement,则Pattern的第一个匹配将被替换,即删除。
因此,在这种情况下,捕获的输出中的第一个空格将被删除。
答案 1 :(得分:0)
参数扩展print(' '.join(just_emails.split()))
只会将${something/ /}
变量中的第一个空格替换为空字符串。
在您的安装上运行${something}
,并搜索标题为man bash
的部分将告诉您这一点以及您可以执行的更多操作。
这几乎肯定与您的parameter expansion
搜索字符串为grep
,最后包含空格匹配字符'\([0-9]*\)\s'
的事实有关。假设匹配实际的空间不是我本来会做的,但原作者可能有更多的信息。
答案 2 :(得分:-1)
在'head -1'之后你需要一个反推。