В сторону: logger
- это стандартная утилита Unix (POSIX). Вы можете выбрать другое имя, чтобы избежать путаницы.
Для программы вы можете использовать | xargs -d '\ n' регистратор
. Это может включать случай, когда вы переписываете свою функцию как файл сценария, с добавлением строки shebang, если это необходимо; однако получить все правильное окружение для этого сценария может быть сложно.
Для функции единственный способ передать аргумент - это передать аргумент. Вы можете написать вторую функцию, которая обертывает вашу первую функцию, которую я переименую в logger1
:
logger1(){ echo "... $1" >>$file; }
logger2(){ read -r x; logger1 "$x"; }
echo this is some log info | logger2
, или вы можете просто попросить вашу функцию прочитать
свой ввод в первую очередь. Вы даже можете закодировать цикл и заставить его обрабатывать несколько строк, если это предусмотрено, как это делают настоящие средства ведения журнала в большинстве систем.
В вашем примере даже нет двоеточия.
Вот реальная переменная PATH из одной из моих систем: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / opt / bin: /usr/i686-pc-linux-gnu/gcc-bin/4.9.3
Каждая запись в этой переменной, разделенной двоеточиями, представляет собой каталог, в котором следует искать вызываемый исполняемый файл, если он не вызывается с полным путем . Например, запуск ls
заставит оболочку проверять наличие / usr / local / sbin / ls
, / usr / local / bin / ls
/, / usr / sbin / ls
, / usr / bin / ls
, / sbin / ls
, чтобы наконец найти / bin / ls
и запустить его.
Обратите внимание, что большинство оболочек будут хешировать
найденный результат, чтобы избежать поиска по пути в следующий раз.
Точка (.
) внутри имени файла абсолютно не влияет на его работу в среде Unix (или Linux), но обычно используется, как и в Windows, для представления расширения файла, которое может помочь определить тип файла.
Обратите внимание, что точка в начале имени файла, например /myfolder/.filename
, скрывает файл от обычного списка.