Печать файла Word for Word при нажатии клавиши

Вы также можете сохранить вывод ps в переменную и записать его с помощью одного echo или printf.

DATE2=`date +%Y-%m-%d:%H:%M:%S`
PS_RESULT=`ps up 12345 --no-headers`

printf "%s: %s" "${DATE2}" "${PS_RESULT}" >> $filename

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

0
11.10.2018, 11:54
1 ответ

Вы не так уж далеки от однострочного файла. Попробуйте массивы и избавьтесь от синтаксических ошибок:

read -a TMPARR < file
while read -n1 CH && [[ $CNT -lt ${#TMPARR[@]} ]]; do [[ "$CH" =~ [[:print:]] ]] && echo ${TMPARR[((CNT++))]}; done

Для многострочного файла попробуйте

while read -a TMPARR <&3
   do   CNT=0
        [[ $CNT -lt ${#TMPARR[@]} ]] && read -sn1 CH
        while read -sn1 CH && [[ $CNT -lt ${#TMPARR[@]} ]]
          do [[ "$CH" =~ [[:print:]] ]] && echo ${TMPARR[((CNT++))]}
          done
   done  3< file

Вы должны разделить дескрипторы входного файла для последовательного чтения текстовых строк и параллельного чтения с терминала.

0
28.01.2020, 04:12

Теги

Похожие вопросы