Я написал следующую строку в своем скрипте, но она не присвоила никакого значения переменной a
a= grep -n mark /etc/samba/smb.conf |cut -d: f1
Я разрезаю номер строки, где строка метки присутствует в smb.conf в переменной a. Но значение переменной равно нулю. В чем может быть проблема
Две вещи:
=
сигнал и значение переменнойЕсли вы хотите поместить результаты команды или серии команд в переменную, вы должны заключить ее в $(command)
или обратные кавычки в старом стиле. Обе строки ниже верны и делают то же самое:
a=`commands`
a=$(commands)
Итак, ваша линия должна быть
a=$(grep -n mark /etc/samba/smb.conf |cut -d: f1)
Есть некоторые различия в том, как объединить использование обратных кавычек или нового стиля. $()
, чек этот вопрос на SO чтобы увидеть хороший ответ.
Попробуйте вместо этого
a=$(grep -n mark /etc/samba/smb.conf |cut -d: f1)
Или вместо $ () вы можете использовать обратные кавычки (которые здесь включают красивый вид кода)
a=`grep -n mark /etc/samba/smb.conf |cut -d: -f1`
Должно быть =$( ... )
или
a=` … `
Может быть, попробовав вот так вырезать:
a=`grep -n mark /etc/samba/smb.conf |cut -d: -f1`