Помогите пожалуйста с Shell-скриптом

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

qbik
Сообщения: 2
ОС: WinXP, Ubuntu

Помогите пожалуйста с Shell-скриптом

Сообщение qbik »

Задание звучит так
Создайте командный файл,который бы выводил сообщение о том,загружена-ли рабочая сессия пользователя kaxxxx(xxxx - любые символы)И,если загружена,то выводится сообщение "Сессия загружена",если нет,то "Сессия не загружена".

Я смог тока это написать,но он не работает:(

Код: Выделить всё

rill@rill-laptop:/bin$ cat > script1
#!/bin/bash
rill=$1
cat $rill
auser ='who | cut -d' '-f1 | grep kaxxxx | uniq'
if [ "$auser" = " " ]
then
echo " Пользователь в системе не работает "
else
echo " Пользователь работает "
fi
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Помогите пожалуйста с Shell-скриптом

Сообщение Portnov »

Насколько я понимаю, кавычки перепутаны.

Код: Выделить всё

auser ='who | cut -d' '-f1 | grep kaxxxx | uniq'


Надо

Код: Выделить всё

auser =`who | cut -d' '-f1 | grep kaxxxx | uniq`


Или, если уж заведомо bash, то лучше так:

Код: Выделить всё

auser =$(who | cut -d' '-f1 | grep kaxxxx | uniq)
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Помогите пожалуйста с Shell-скриптом

Сообщение watashiwa_daredeska »

Ошибок тут море, перечислять устанешь.

Код: Выделить всё

#!/bin/bash
if [ -n "$1" ] && who | cut -d' ' -f1 | grep "$1" >/dev/null 2>&1
then
    echo "logged in"
else
    echo "not logged in"
fi
Не вздумай перепечатывать руками. copy/paste и только он.
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Помогите пожалуйста с Shell-скриптом

Сообщение diesel »

Можно еще вот так:

Код: Выделить всё

diesel@indie:~/scripts/tests$ if who | awk '{print $1}' | grep "^diesel12$" > /dev/null; then echo "User in the system"; else echo "No user"; fi
No user
diesel@indie:~/scripts/tests$ if who | awk '{print $1}' | grep "^diesel$" > /dev/null; then echo "User in the system"; else echo "No user"; fi
User in the system


if ведь можно не только с test/[/[[ использовать, но и с любой другой командой/списком команд

ЗЫ: опередили, обрати внимание что грепать лучше на "^$user$" а не просто "$user", потому что можешь не то найти.
Спасибо сказали:
qbik
Сообщения: 2
ОС: WinXP, Ubuntu

Re: Помогите пожалуйста с Shell-скриптом

Сообщение qbik »

Спасибо всем большое!
а еще вопросик.Забыл в первом сообщении написать.Вот в этих вариантах кодов есть ожидание ввода имени пользователя с клавиатуры?
Типа вводим имя пользователя,если сессия загружена ,то вывод сообщения загружена,если нет,то нет?

P.S Можете еще подправить вот эти 2 скрипта?тоже что-то не работают они(

1.Создайте командный файл, выполняющий следующее: в случае, если файл my_file существует, то выводит его содержимое; в противном случае выводит сообщение "File not found". При этом на экране не должны появиться сообщения, выдаваемые системными командами. Используйте механизм условного выполнения команд. Выполните этот командный файл во всех трех режимах запуска. Проверьте его работу при наличии файла my.file и при его отсутствии

Код: Выделить всё

rill@rill-laptop:/bin$ cd
rill@rill-laptop:/bin$ cat > rill
 #!/bin/bash
 my=$1
 cat $my
rill@rill-laptop:/bin$ cat > rill
#/bin/bash
my=my_file
if [ -e $my ]; then
echo "File not found";
rill@rill-laptop:/bin$ cat > rill
#/bin/bash
my=my_file
if [ -e $my ]; then
echo "File exist";
cat $my;
else echo "File not found";
fi


2.Модифицируйте предыдущий командный файл так, чтобы он ожидал ввода имен файлов с клавиатуры. Останов должен происходить в случае введения пустой строки

Код: Выделить всё

rill@rill-laptop:/bin$ chmod a+rx rill
rill@rill-laptop:/bin$ ./rill
File not found
rill@rill-laptop:/bin$ cat > rill
#/bin/rill
read fname
if [ "$fname"="" ]
then
echo "Good  bay!"
exit 0
fi
if [-e $fname ]
then
cat $fname 2>/dev/null
echo
else
echo "File not found"
fi
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Помогите пожалуйста с Shell-скриптом

Сообщение drBatty »

qbik писал(а):
21.12.2008 16:51
if [ "$fname"="" ]
then
echo "Good bay!"
exit 0
fi
if [-e $fname ]

пробелов не хватает
if [ "..." = "" ]
и
if [ -e ... ]
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: