在Unix中运行while循环时出错

时间:2015-11-13 10:59:11

标签: shell unix aix

我正在执行脚本并在以下代码中收到错误。它在RedHat上工作正常,但在AIX7.1中却出错:

while read line
do
read -A arr <<< $line
ct="$(perl -e 'print time()')"
x=${arr[6]}
y="$(((ct-x)/60/60))"
if [ $y -gt 48 ];then
echo "${arr[0]} ${arr[3]} ${arr[5]} ${arr[6]}" >> $longrunning_jobs_tmp1
fi
done < $active_jobs_tmp4

我也正确定义了变量,但仍然遇到以下问题:

Job_Monitoring_Test.ksh[121]: 0403-057 Syntax error at line 123 : `<' is not expected. 

2 个答案:

答案 0 :(得分:0)

在为ksh88编写的AIX上,您正在AIX上运行带有ksh93的脚本。

尝试将其shebang设置为:

#!/bin/ksh93
...

如果ksh93不可用,也许dtksh可行。否则,您需要将脚本移植到bash

编辑:

如果问题是使用<<<语法,则可以替换

read -A arr <<< $line

由:

read -A arr <<%EOF%
$line
%EOF%

答案 1 :(得分:0)

您有/可以在系统上安装Bash吗? 使用shebang #/bin/bash可能会解决很多问题 您仍然需要查看不同命令中使用的选项,例如find(mtime),datesed(用于就地编辑的-i选项),但Bash特定的构造将起作用。< / p>