我在文件中有以下内容,分为以下几个字段:
$ cat list
ldap 12309423409875
account01 98734598073
notes 4736594384325
我想使用awk通过从第一个字段对应的用户获取输入来更改第二个字段的值。例如,我要求用户输入字段;如果他输入ldap
,那么我应该能够给第一行的第二个字段赋予不同的值。
我尝试了以下脚本,但它不起作用:
generatepasswd()
{
date | md5sum
return
}
cat list
echo "for what do you want to change the password"
pass=`generatepasswd`
read op
awk '$1=="$op"{$2=$pass}1' list > tmp && mv tmp list
如果我直接使用字符串而不是$op
,我会得到输出;例如,如果我使用ldap
,我会得到结果,但如果我使用$op
,我就不会得到输出。 op
由字符串ldap
组成。
答案 0 :(得分:0)
echo "for what do you want to change the password"
read op
pass=$(date|md5sum)
awk -v input="$op" -v pass="$pass" '{if($1==input) $2=pass;}1' list
这将在op
内使用bash变量pass
和awk
。