Присвоение значения stdout переменной

Поэтому я пытаюсь создать сценарий sh, в котором я помещаю значение, полученное из команды, в переменную, в данном случае n, но я понятия не имею, что я делаю, и это, очевидно, не работает лол:

1 n=0 2 cat test | grep -cE '[0-9]{1,4}' > $n 3 echo "there were $n lines in test" > rtest1 

Создает файл rtest1, в котором говорится, что в тесте было 0 строк

Между прочим, test – это файл с 10 строками.

Так как же присвоить значение из stdout переменной в сценариях оболочки? : D

One Solution collect form web for “Присвоение значения stdout переменной”

То, что вы хотите, называется заменой команды :

 file=./path/to/some/file n="$(grep -cE '[0-9]{1,4}' < "$file")" echo "there were $n matching lines in $file" 

Конечно, вам не нужны кавычки в назначении, просто n=$(...) подойдет. Но в целом вы хотите кавычки вокруг подстановки команд. Также обратите внимание, что он ест конечные строки.

Смотрите также:

  • Как правильно заключить в кавычки $ (команда $ arg)?
  • В чем разница между $ (вещи) и `вещи`?
  • Как перенаправить вывод отладочной информации в файл
  • Получите pwd / cwd с переменной $ HOME
  • Сравнение нескольких строк в одном сценарии оболочки оператора if с использованием ИЛИ gate
  • Shell Script выдает ошибку при запуске программы на C ++
  • В tmux как установить переменную, специфичную для панели, которая будет отображаться в строке состояния панели только для этой панели
  • Терминал не понимает некоторые простые команды и пытается установить пакет «sed» после попытки добавить каталог в PATH
  • Команда для удаления пустых строк в файле дампа
  • Передача файла с локального компьютера на удаленный сервер
  • bash как улучшить этот скрипт
  • Использование команды cut и sed одновременно в скрипте
  • Запуск нескольких скриптов в фоновом режиме и немедленный возврат
  • Linux и Unix - лучшая ОС в мире.