Linux脚本问题:输入前缀匹配(忽略大小写)提取内容至文件失败
解决脚本无输出的问题
我来帮你搞定这个问题~你的脚本没输出的核心原因是单引号的变量展开问题,咱们一步步分析:
问题根源
在shell中,单引号'会把里面的内容当成纯字面量,不会解析变量。你写的grep -i '^$s'里,$s不会被替换成你输入的字符串,grep实际在找以$s这两个字符开头的行,自然匹配不到任何内容。
修正后的脚本
把grep的单引号换成双引号",这样shell就会先展开$s变量,再把结果传给grep:
echo "Type a pattern to find" read s cut -d: -f3 test | grep -i "^$s" > printfile
或者你也可以把变量部分从单引号里拆出来,用单引号+双引号组合(这种方式在变量里有特殊字符时更安全):
echo "Type a pattern to find" read s cut -d: -f3 test | grep -i '^'"$s" > printfile
额外优化
你的脚本里用了cat test | cut,其实可以直接让cut读取文件,减少不必要的管道操作,效率更高(上面的修正脚本已经做了这个优化)。
测试验证
比如你输入laith,脚本会匹配到Laith_Budairi和laith_buda,并写入printfile文件里,完美符合你的需求~
内容的提问来源于stack exchange,提问作者Ethereal_Lion
相关产品推荐
相关产品推荐

