我IFS
在 shell 脚本中使用变量来解析一些数据(数据已经以给定的格式提供给我)。由于默认的 IFS 是空格/制表符/等,我使用该字符'¬'
来分隔输入文件行中的字段。数据类似于
14352345¬AFSFDG1234¬text¬(http://www.google.com,3)(http://www.test.com,2)¬(www.test2.com,4)¬123-23432
我创建了一个脚本,该脚本使用 IFS 变量将文件通过管道传输到 while 循环中:
#!/bin/bash;
while IFS=¬ read -r sessionId qId testResults realResults queryId;
do echo $sessionId; done < inputFile
(在这个循环中,我实际上对另一个文件进行了一些 awk 处理)。
发生的情况是,如果我手动运行此文件(仅 ./file),它会完美运行。如果我将它作为脚本(cron)的一部分或在另一个脚本中运行,我会收到解析错误,这表明我的 IFS 变量没有被使用。我尝试过复制旧的 IFS 变量并在解析后重置以及传递 IFS 变量的不同方式(¬
, '¬'
,$'¬'
等,但似乎没有帮助)。
任何指针/提示将不胜感激。
更新:经过一些额外的调试,问题出在 awk 语句而不是分隔符上