从Ruby运行bash脚本:" Bad for loop变量"错误

时间:2014-08-05 20:11:13

标签: ruby linux bash shell

我有一个Ruby脚本,它编排了许多其他脚本。其中一个bash脚本从服务器中提取日志数据,然后ruby脚本会解析它们。

我的bash脚本看起来像这样:

#pullLogs.sh
for ((x = $2; x <= $3; x++)); do
    # creates a subdirectory for each server number
    rsync --progress -rvze ssh name@$ARCHIVE_SERVER:/path/to/log/$logDate.gz $x/
done
for ((x = $2; x <= $3; x++)); do
     cd $x
     for z in *.gz; do gunzip $z; done
     cd ..
done
cd ..

此脚本的作用是从指定的服务器中提取给定日期的日志。通常有十个服务器,因此脚本将从服务器1拉出,然后从服务器2拉出等等。

如果我从命令行

指定所需的日期,则此脚本可以正常工作
./pullLogs.sh desired_date 1 10

成功从所有十台服务器中提取所需日期的所有日志。

但是,我想将所有日志从今天的日期拉到过去的某个日期,并解析每个日志。所以我使用这个ruby脚本:

while upload_day != $DESIRED_DATE do
    args = "#{year}#{month}#{day} 1 10"
    `./#{path_to_pullLogs_sh} #{args}`
    `ruby #{name_of_followup_ruby_script}`
    upload_day = upload_day.prev_day 
end

ruby​​脚本遍历正确的日期并调用正确的bash脚本(上面给出的脚本)。但是,在运行bash脚本之后,它会产生错误:

./pullLogs.sh: 15: ./pullLogs.sh: Syntax error: Bad for loop variable

因此,当我从控制台运行它时,循环变量1和10是好的,但是当我从ruby脚本运行它时,它不会将循环变量解释为可接受。

如何使这项工作?

0 个答案:

没有答案