变量含句点引发AWK语法错误的技术求助(LSB环境)
问题解决方法
你的代码存在两处关键语法错误,修正后即可正常运行:
1. 修正FILE_ID的提取命令
原sed命令存在引号未闭合、变量引用格式错误的问题,修正后:
FILE_ID=$(sed -n "${LSB_JOBINDEX}p" "$IDs_file")
- 补充了
$IDs_file前的闭合双引号 - 用双引号包裹
${LSB_JOBINDEX}确保变量正确展开 - 给
$IDs_file加双引号,避免文件名包含空格或特殊字符时出错
2. 修正awk变量传递与引用逻辑
原awk命令的变量传递方式不符合语法要求,且脚本内变量引用错误,修正后:
awk -v OFS="\t" -v FILE_ADD="$FILE_ID" '{$2=FILE_ADD $2}1' "$INPUTFILE" > "$OUTPUTFILE"
- 传递外部变量必须使用
-v选项,每个变量单独声明(这里新增-v FILE_ADD="$FILE_ID") - awk脚本内引用变量直接用变量名
FILE_ADD,不需要加引号或$符号 - 给
$INPUTFILE和$OUTPUTFILE加双引号,避免特殊字符导致的解析错误
修正后的代码即可实现将提取到的FILE_ID添加到输入文件第二列每一项的开头,并以制表符作为输出分隔符。
内容的提问来源于stack exchange,提问作者Amy Houseman
相关产品推荐
相关产品推荐

