Я изо всех сил пытался в bash проанализировать и прочитать файл параметров в несколько глобальных переменных. Мы запускаем среды HPUX и Linux, и я пытаюсь заставить это работать в BASH. В настоящее время он дает мне ошибку в инструкции sed. Даже когда я вынимаю sed, внутри цикла он считывает переменную (переменные), но значения возвращаются к глобальному определению, как только я выхожу из цикла. Пробовали добавить «#!/bin/sh» вверху файла, но это не работает, как оболочка, код с комментариями взят из оболочки из системы HPUX. Любая помощь будет оценена по достоинству!
set -xv
ReadStat() {
set -xv
while read EngName AllTabs Distribs DropDist BlockSet BlockExp BlockBy MaxProcs ; do
echo "read: EngName=$EngName AllTabs=$AllTabs Distribs=$Distribs DropDist=$DropDist BlockSet=$BlockSet BlockExp=$BlockExp BlockBy=$BlockBy MaxProcs=$MaxProcs "
done < sed -e "s/||/|-|/g" -e "s/||/|-|/g" -e "s/||/|-|/g" -e "s/|/ /g" $StatFile
#cat $StatFile |\
# sed -e "s/||/|-|/g" -e "s/||/|-|/g" -e "s/||/|-|/g" |\
# sed -e "s/|/ /g" |\
# read EngName AllTabs Distribs DropDist BlockSet BlockExp BlockBy MaxProcs
}
# main() {
BaseNameIs=`basename $0 '.sh'`
StatFile=/tmp/kz.stat
EngName="it1xxx"
CronJob='Y'
Distribs='B'
DropDist='N'
AllTabs='N'
BlockSet='N'
# BlockExp=`date '+%Y%m%d%H%M'`
BlockExp=`date '+%Y%m%d'`'0000'
BlockBy='none'
MaxProcs=30
MyHost=`hostname`
ReadStat
# main() }
Входной файл выглядит так:
it1xxx|Y|B|N|Y|201401071110|none|30|