bash (if и fi)

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

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

Ответить
Аватара пользователя
kkkggg
Сообщения: 100

bash

Сообщение kkkggg »

Есть такой пример

#!/bin/bash

HOME_DIR=/home/diman
cd $HOME_DIR

if [ 'pwd' == "$HOME_DIR" ]
then
echo "All ok"
else
echo "No ok"
fi
exit 0

1. Почему if не работает?
2. Что делает fi?
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: bash

Сообщение Liksys »

для исполниения команды используй обратные (или как их там, на букве "Ё") кавычки: ``
fi - конец инструкции if
для сравнения используй одно равно.

Исправленный вариант:

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

HOME_DIR="/home/diman"
cd $HOME_DIR

if [ `pwd` = $HOME ]; then
     echo "All ok"
else
     echo "No ok"
fi
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: bash

Сообщение sash-kan »

(kkkggg @ Oct 9 2006, в 18:33) писал(а):1. Почему if не работает?
во-первых, видимо, все-таки кавычки использованы прямые, а не обратные. во-вторых, логичнее будет и левый аргумент заключить в двойные кавычки.
(kkkggg @ Oct 9 2006, в 18:33) писал(а):2. Что делает fi?
завершает конструкцию if-then-else-fi
(Liksys @ Oct 9 2006, в 18:46) писал(а):для исполниения команды используй обратные (или как их там, на букве "Ё") кавычки: ``
так даже лучше:
$(команда)
потому что легче строить вложенные конструкции.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Bolverk
Бывший модератор
Сообщения: 1571
ОС: Cygwin
Контактная информация:

Re: bash

Сообщение Bolverk »

kkkggg писал(а):
09.10.2006 19:33
HOME_DIR=/home/diman
cd $HOME_DIR

А для этого уже существует переменная HOME.
Спасибо сказали:
Ответить