Bash脚本调用awk传递参数时出现Segmentation fault如何解决
问题解决方法
错误原因
- 变量传参未加引号:你传入的时间戳包含空格,Bash中直接写
$fromtime会被拆分为多个独立参数,导致awk参数解析混乱,触发段错误 - awk内部变量引用错误:awk的单引号代码块中,双引号包裹的内容会被识别为普通字符串,不会解析你传入的
fromtimestamp变量,且awk引用自定义传参的变量不需要加$前缀 - 语法冗余错误:awk代码块末尾多了多余的右大括号,存在语法问题
修正后的脚本
#!/bin/bash fromtime="$1" totime="$2" nameoffile="websniffer.log" awk -v fromtimestamp="$fromtime" -v totimestamp="$totime" '$0 >= fromtimestamp && $0 <= totimestamp' "$nameoffile"
验证说明
使用你原有的执行命令即可正常运行:
./samplescript.sh "07-Nov-2021 13:40:02.124" "07-Nov-2021 13:43:08.124"
内容的提问来源于stack exchange,提问作者Jef Smackner
相关产品推荐
相关产品推荐

