LINUX.ORG.RU

проблема со сценарием на bash

 , ,


0

1

Добрый день! Я изучаю Unix самостоятельно по книге и сейчас у меня возникла проблема с одним из заданий: «Напишите сценарий, анализирующий с помощью case список пользователей, находящихся в настоящий момент в системе. Если имеется хотя бы один сеанс root, должно выдаваться предупреждающее сообщение.»

Командой who | awk {'print $1'} я получаю строку из пользователей находящихся в данный момент в системе.

Или же командой ps -all | awk {'print $3'} я получу строку из UID.

Вопрос в следующем, мне надо читать это строку по очереди? Т.е. взять первое слово из строки и проверить входит ли оно в «root», потом второе и так далее. Цикл for еще не проходился, поэтому я его типа не знаю.


Ответ на: комментарий от anonymous

Анонимус спасибо, я переделал немного. Предупреждение выдает. Что значит shopt -s extglob?

 
#!/bin/bash

f1=$(who | awk {'print $1'}) 
shopt -s extglob 
case $f1 in 
    @(|*[[:space:]])root@(|[[:space:]]*) ) 
    echo «1.catch» ;; 
esac

patr88
() автор топика
Ответ на: комментарий от patr88

http://mywiki.wooledge.org/glob

In addition to the traditional globs (supported by all Bourne-family shells) that we've seen so far, Bash (and Korn Shell) offers extended globs, which have the expressive power of regular expressions.

anonymous
()
Ответ на: комментарий от anonymous

ну я имел ввиду,что скрипт работает) - предупреждение выдает)

patr88
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.