小编DOS*_*DOS的帖子

带有Unicode的脚本中的IFS变量问题

IFS在shell脚本中使用变量来解析一些数据(数据已经以给定的格式提供给我).由于默认IFS是空格/制表符/等,我正在使用该字符'¬'来分隔输入文件行中的字段.数据类似于

14352345¬AFSFDG1234¬text¬(http://www.google.com,3)(http://www.test.com,2)¬(www.test2.com,4)¬123-23432
Run Code Online (Sandbox Code Playgroud)

我创建了一个脚本,使用IFS变量将文件管理到while循环中:

#!/bin/bash;
while IFS=¬ read -r sessionId qId testResults realResults queryId;
do echo $sessionId; done < inputFile
Run Code Online (Sandbox Code Playgroud)

(在这个循环中我实际上用另一个文件做了一些awk处理).

如果我手动运行此文件(只是./file),它会完美地运行.如果我将其作为脚本(cron)的一部分或在另一个脚本中运行,我会得到解析错误,这表明我的IFS变量未被使用.我试着复制了旧的IFS变量和分析,以及通过在IFS变量的不同方式后复位(¬,'¬',$'¬',等等,但似乎并没有帮助).

任何指针/提示将不胜感激.


更新:经过一些额外的调试,结果问题是awk语句而不是分隔符

variables bash shell ifs

1
推荐指数
1
解决办法
700
查看次数

标签 统计

bash ×1

ifs ×1

shell ×1

variables ×1