2015-01-14 2 views
1

Мне нужно общее количество файлов в каталоге и вы хотите использовать этот номер в сценарии оболочки. Я попробовал это в терминале, и она отлично работает:Возвращает количество файлов в каталоге переменной в оболочке scrtpt

find . -type f | wc -l 

Это просто выводит количество файлов, но я хочу, чтобы присвоить возвращаемое число переменной в моем сценарии оболочки, я попробовал это, но это Безразлично» т работы:

numberOfFiles = find . -type f | wc -l; 
echo $numberOfFiles; 

ответ

1

чтобы сохранить вывод команды, вы должны использовать var=$(command) синтаксис:

numberOfFiles=$(find . -type f | wc -l) 
echo "$numberOfFiles" 

Проблемы в текущем подходе:

numberOfFiles = find . -type f | wc -l; 
      ^^ 
      | space after the = sign 
      space after the name of the variable 
     no indication about what are you doing. You need $() to execute the command 

Вы в настоящее время пытаются выполнить команду numberOfFiles со следующими параметрами: = find . -type f | wc -l;, и это явно не то, что вы хотите сделать :)

1

Попробуйте это, когда присвоение вывода команды в переменную вам нужно использовать `. Или вы также можете использовать $(command). Оба правильные пути.

numberOfFiles=`find . -type f | wc -l`; 
echo $numberOfFiles; 
+1

backticks довольно устарели, а '$()' предпочтителен, так как вы можете их вложить. См. [Bash Backticks vs Braces] (http://stackoverflow.com/q/22709371/1983854), например. – fedorqui

+1

Да, я знаю, все же иногда я не могу воздержаться от использования back-ticks, потому что использовал его много времени с момента обучения, это стало привычкой. Спасибо за ссылку @fedorqui, это довольно информативно. – Skynet

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