как выполнить grep имя переменной

cat YOURFILE | xargs yum -y install

Это почти то же самое, что и решение @daisy, за исключением того, что если список пакетов слишком длинный для командной строки, он разбивает его на отдельные yum installкоманды.

0
17.11.2017, 02:18
2 ответа

Я бы не стал использовать grep. Вместо этого я бы сравнил имя файла, используя встроенный -в testоператор ([[... ]]), который может напрямую обрабатывать регулярные выражения.

function getname(){
    local fname="$1"

    [[ -z "$fname" ]] && read -p "Enter a file name: " fname

    until [[ "$fname" =~ ^[[:alpha:]] ]] && [[ -f "$fname" ]]
    do
        [[ -d $fname ]] && echo "Paths are not a legal file name."

        read -p "Enter a legal file name: " fname
    done
}
3
28.01.2020, 02:16

Если вы должны использовать grep, то я подозреваю, что проблема с вашей реализацией заключается в том, что вместо2>&1(объединить стандартную ошибку и стандартный вывод )вы написали2>1&(отправить стандартную ошибку в файл с именем 1и поместите команду в фон оболочки ). Это предотвращает передачу состояния выхода grepусловному оператору.

FWIW вы можете использовать -qдля тихого выхода, и я не думаю, что вам вообще нужна подоболочка -вы можете просто написать

until grep -qE '^[a-zA-Z_]\w+' <<< "$fname"; do
2
28.01.2020, 02:16

Теги

Похожие вопросы