2013-07-15 2 views
3

Я пытаюсь запустить команду и сохранить ее в переменной.Сохранить вывод в переменной и использовать переменную в команде

length=`last | grep foouser | wc -l` 

Это прекрасно работает, но когда я добавляю переменную в команду, она разбивается.

value=$1 
length=`last | grep $value | wc -l` 

Как я могу получить этот второй пример для работы acceptomg переменной?

+0

Что именно сломается? Кроме того, вы, вероятно, хотите использовать '$ value' вместо' $ 1' в команде 'grep'. – chepner

+0

Хорошо, да, извинения, которые должны были быть $ value после 'grep'. – ojhawkins

ответ

3

Вы на самом деле не нужно wc:

length=$(last | grep -c "$value") 

Вы могли бы улучшить имена переменных

num_logins=$(last | grep -c "$username") 
4

Вы должны правильно указывать свои переменные. Если они содержат пробелы ваш сценарий может сломаться:

value="$1" 
length="$(last | grep "$value" | wc -l)" 
+0

Важное значение имеет значение '$ value' как аргумент' grep'. Котировка RHS двух заданий меньше; слово-расщепление не выполняется, поэтому я не уверен, что есть проблема с тем, чтобы оставить их без кавычек (хотя это и не помешает их процитировать). – chepner

+0

все еще не повезло, я вхожу в 'value =" foouser "/ n length =" $ (last | grep "$ value" | wc -l) ", а затем пытается эхо' $ lenght' и ничего не возвращает @Benoit @ chepner – ojhawkins

+0

Здесь вы случайно набрали 'lenght'. Вы тоже заблуждаетесь на своем терминале? – chepner

Смежные вопросы