while循环在crontab中运行脚本时无法在shell脚本中运行

时间:2015-09-24 10:27:31

标签: shell while-loop crontab

我正在尝试使用while循环逐行读取文件:

while read Line; do
     echo Inside outer loop
     while read Line2; do
          .....
          echo Inside inner loop
          .....
     done < /absolute path of file/filename2
done < /absolute path of file/filename

独立运行时脚本运行正常。但是当它从crontab运行时它不会进入循环内部。

请说明可能的原因。

1 个答案:

答案 0 :(得分:1)

第二个while循环正在读取 all 输入(&#34; filename&#34;的第一行除外)。您需要重定向到单独的文件描述符:

while IFS= read -r -u3 Line; do
     echo Inside outer loop
     while IFS= read -r -u4 Line2; do
          .....
          echo Inside inner loop
          .....
     done 4< "/absolute path of file/filename2"
done 3< "/absolute path of file/filename"
  • 使用IFS=read -r确保从文件中逐字读取该行。
  • read -u33< file使用特定的fd
  • 如果您的真实路径有空格,则需要引用文件名