2016-06-18 1 views
1

Я столкнулся с странной ситуацией. Я нахожусь на RHEL 6.3. Я пытаюсь использовать встроенную команду «читать», чтобы читать строки в файле в массиве и обрабатывать его.встроенные флажки командной строки linux

В моем сценарии, я использую

while IFS=" " read -r -a appInfo 
do 
    echo "4 ${appInfo[0]}" 
    echo "4 ${appInfo[1]}" 
    echo "4 ${appInfo[2]}" 
    echo "4 line *{appInfo[@]}" 
    currentApp="${appInfo[*]}" 
..... 
done < details.txt 

Это работает нормально, когда я выполнить скрипт из командной строки. Команда чтения показывает ниже данные

read: usage: read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...] 

Если я read --version в командной строке, я получаю

Commandline версия чтения (AT & T Research) 2006-12-19

Но когда Я пытаюсь выполнить тот же самый сценарий из проекта Bamboo, команда чтения генерирует ошибку

read: -a: unknown option 
Usage: read [-ACprsv] [-d delim] [-u fd] [-t timeout] [-n nchar] [-N nchar] 
      [var?prompt] [var ...] 

Bamboo: версия для чтения (AT & T Research) 2006-12-19

Таким образом, если версия показывает то же самое, почему флаги показывают по-разному?

В чем может быть проблема. Как я могу решить проблему, чтобы я мог прочитать строку в массиве даже при ее запуске из плана Bamboo?

+1

RHEL 6.3 достиг [конца жизни] (https://access.redhat.com/support/policy/updates/errata). Поскольку нынешние системы имеют меньше ошибок, чем старые системы, есть ли веская причина не обновлять их? – John1024

+0

Не уверен. Это решение принимается нашими оперативными командами, в целом у нас нет никакого веса. :(В этом случае, однако, почему существует разница в поведении? – adbdkb

+0

Я не использую RHEL/bamboo, но, судя по подсказке 'read', мне кажется, что ваш сценарий командной строки работает под' bash 'в то время как скрипт bamboo запущен' ksh'. – John1024

ответ

1

Благодаря @ John1024, я смог исправить проблему, изменив #! строка в #!/bin/bash из #!/bin/sh (на которой была запущена оболочка ksh по умолчанию).

Кредит решения отправляется на @ John1024, просто ставя его в качестве ответа, чтобы его можно было помечать как решение вопроса.

Смежные вопросы