Войдите в Gentoo и выполните команды gentoo, такие как equery

Я написал сценарий оболочки для ввода префикса gentoo и выполнения команд. Но как только он входит в префикс Gentoo, он останавливается и не выполняет остальные шаги. По моему мнению, консоль изменилась с RHEL на GENTOO, что не позволяет сценарию оболочки выполнять остальные команды. Есть ли способ, которым без ввода префикса GENTOO я могу выполнять определенные команды gentoo в сценарии оболочки?

Используемые команды:

Gentoo_prefix
equery list > file.csv

Скрипт:

cat file | awk '{print $3}'| cut -d '/' -f3 | cut -d '_' -f1 | sort -u | uniq -u | sed 's/.$//' > files
read -n 2 Detail
files=`echo $Detail | tr '[:upper:]' '[:lower:]'`
read server
Server=`echo $server | tr '[:upper:]' '[:lower:]'`
for nat in $(cat files)
do
    for serv in $Server
    do
        if [ $files == $nat -a $Server == $serv ]
        then
            ls /tmp/$nat'0_'$serv/ | grep -i python > module
            read module_name
            ls /tmp/$nat'0_'$serv/$module_name/ | grep ^3 > version
            $version_name = ' '
            read version_name
            for name in $(cat version)
            do
                if [ $version_name == ' ' ]
                    for pack in $(cat module)
                    do
                        if [ $version_name == $pack ]
                        then
                            $version_name
                            equery list > components.csv

person Lovika    schedule 06.12.2016    source источник
comment
Мы не сможем вам помочь, если вы не опубликуете сценарий.   -  person Barmar    schedule 07.12.2016
comment
Разместите его в вопросе, чтобы его можно было отформатировать для чтения.   -  person Barmar    schedule 07.12.2016
comment
Пожалуйста, проверьте вопрос, теперь я также разместил сценарий. как только строка $version_name выполняется, она входит в Gentoo, и следующая строка не выполняется.   -  person Lovika    schedule 07.12.2016
comment
К вашему сведению, вам не нужно uniq -u после sort -u, так как sort -u не выводит дубликатов.   -  person Barmar    schedule 07.12.2016
comment
Хорошо, я удалю это, но не могли бы вы помочь мне в Gentoo?   -  person Lovika    schedule 07.12.2016
comment
Я не понимаю if [ $files == $nat -a $Server == $serv ]. $Server — это весь список серверов, а $serv — текущий в цикле. Как они могут быть одинаковыми, если в списке нет только одного сервера?   -  person Barmar    schedule 07.12.2016
comment
это просто черновик сценария, который я только что изменил, чтобы удалить несколько конфиденциальных деталей!!   -  person Lovika    schedule 07.12.2016
comment
Что вы подразумеваете под помощью в gentoo? Gentoo — это дистрибутив Linux, а не приложение.   -  person Barmar    schedule 07.12.2016
comment
и да, вы правы, в списке присутствует только одна информация о сервере, исходный скрипт работает нормально до входа в префикс gentoo.. как только он входит в префикс gentoo, он выдает данные для входа в консоль и останавливается!   -  person Lovika    schedule 07.12.2016
comment
Где gentoo_prefix в сценарии?   -  person Barmar    schedule 07.12.2016
comment
$version_name ...bootstrap-prefix.sh установлен и назван как другая версия, например 3.2 3.3!   -  person Lovika    schedule 07.12.2016


Ответы (1)


Чтобы передать ввод команде в сценарии, вы должны подключиться к ней или использовать здесь-документ, а не просто поместить ввод после команды, как если бы вы вводили ее в интерактивном режиме.

                    if [ $version_name == $pack ]
                    then
                        echo 'equery list > components.csv' | $version_name

or

                    if [ $version_name == $pack ]
                    then
                        $version_name <<EOF
equery list > components.csv
EOF
person Barmar    schedule 06.12.2016
comment
список эхо-запросов | $version_name › component.csv это также работает вместе с echo 'equery list › component.csv' | $version_name Спасибо! - person Lovika; 07.12.2016