Как сохранить содержимое переменной после трубы

У меня есть следующий скрипт

#!/bin/bash file="$1" cat $file n=$(cat $file | wc -l) cat $file 

Я использую его как этот cat some_file.txt | myScript.sh cat some_file.txt | myScript.sh первый cat выводит содержимое файла, а второй – нет. Как сохранить содержимое переменной после трубы?

One Solution collect form web for “Как сохранить содержимое переменной после трубы”

Это не делает то, что вы думаете, что это делает. $1 – это первый параметр, который вы передаете скрипту, но на самом деле вы его не передаете. Это означает, что cat $file фактически становится cat . Когда не заданы какие-либо аргументы, cat просто напечатает свой вход:

 $ echo "foo" | cat foo 

Итак, первая cat печатает входные данные, содержимое файла. Второе не имеет ввода, так как все было принято первым, поэтому оно ничего не делает. То, что вы хотите сделать, это что-то вроде:

 myscript.sh file 

Это будет дважды печатать содержимое файла, а также сохранить вывод cat $file |wc в переменной n .


Если вы хотите сохранить содержимое файла в $file , попробуйте:

 file="$(cat < "$1")" 

И запустите сценарий с именем файла в качестве аргумента:

 script.sh file 
  • Одинарные или двойные кавычки при определении псевдонима?
  • Проверьте, работает ли telnet-порт в сценарии оболочки
  • сценарий оболочки, чтобы присоединиться к 2 файлам на основе 2 столбцов, и если совпадение найдено, напишите несколько полей
  • Что такое отображение эха $ -1?
  • Какова наилучшая практика для представления логического значения в сценарии оболочки?
  • Перезапись строки в оболочке unix после печати
  • какая оболочка будет использовать sudo для выполнения сценария оболочки без строки shebang
  • readlink -f не работает с несколькими файлами
  • определять оболочку в скрипте во время выполнения
  • Как переместить некоторые, но не все файлы из одного каталога в другой?
  • Чтение нескольких записей из входного файла
  • zsh "echo SomeText >> ** / filename" в других оболочках
  • Interesting Posts

    gpg -recv-ключи зависают, когда не запускаются root

    Как узнать, есть ли у меня «чужие» пакеты в моем Linux

    Добавление макроса TeX в начало файла с помощью sed (почему мой метод не работает?)

    Режим перехвата SQUID с использованием внешней проверки подлинности и ICAP с адаптационным_send_username не работает

    Как настроить интервал соединения в соединении BLE?

    Виртуальные последовательные порты / dev / pts

    Замораживание при запуске с ошибкой "fb: переход на radeondrmfb из EFI VGA"

    Нужна помощь в настройке Xorg.conf для монитора 6 Big Desktop

    Расширение функциональности команд переключения событий в Vim

    Что такое debian, эквивалентное этой команде repoquery?

    В чем смысл субдомена «mail»?

    Почему этот фрагмент оболочки проверяет, были ли хосты запущены с отключением netcat преждевременно?

    Временно переопределить системный пакет

    Попытка установить Linux Mint 13 через Wubi, бросает меня в подсказку grub

    Ручная установка программы на Debian

    Linux и Unix - лучшая ОС в мире.