咨询:如何通过Bash脚本提取每行的第三个字符?
提取每行第三个字符的脚本修正
你的脚本目前能执行cat部分输出内容,但无法正确提取每行的第三个字符,原脚本如下:
#!/bin/bash cat << EFO Hello World How are you EFO && while read hello.sh do echo ${hello.sh} | cut -c3 done
期望输出:
l r w
问题分析
- bash变量名仅支持字母、数字和下划线,
hello.sh包含点号,属于非法变量名 ${hello.sh}会被解析为变量hello拼接字符串.sh,并非正确的变量引用;且循环中直接用该写法会在脚本初始化时就展开,无法读取每次循环的输入内容cat的输出没有传递给while循环,&&只是连接两个独立命令,循环没有获取到需要处理的输入流
修正后的脚本
循环写法
#!/bin/bash cat << EFO Hello World How are you EFO | while read line do echo "$line" | cut -c3 done
更简洁的直接处理写法
无需循环,直接用管道将cat输出传给cut处理:
#!/bin/bash cat << EFO Hello World How are you EFO | cut -c3
内容的提问来源于stack exchange,提问作者Adam B
相关产品推荐
相关产品推荐

