Я пытаюсь распечатать журнал, используя bash который фиксирует некоторый текст, вошел в систему пользователя, дату и время и распечатывает его для analysis файла.

удар

echo "analysis done by" "$USER" "on" && date +"%D"  && date +"%r" > /home/analysis

Тем не менее, в настоящее время только время выводится на анализ, а echo .... пользователь и дата печатаются на стандартный stdout . Почему это так, я делаю что-то не так? Благодарю.

стандартный вывод

analysis done by cmccabe on
07/12/16

желаемый результат (анализ)

analysis done by cmccabe on
07/12/16
08:31:32 AM

2 ответа2

1

&& (like ;) - это разделитель команд, а перенаправления работают на уровне команд , а не на уровне строк.

Если вы хотите, чтобы одно перенаправление применялось сразу к нескольким командам, сгруппируйте их:

(echo "foo"; date +bar) > /path/to/file

{ echo "foo"; date +bar; } > /path/to/file

(В данном конкретном случае не имеет значения, используете ли вы && или ; )

В качестве альтернативы вы можете вывести одну строку со всем:

echo "analysis done by $USER at $(date "+%D %r")" > /path/to/file
0

Добавьте %n к строке выходного формата для date когда вы хотите новую строку.

date +"analysis done by $USER on%n%D%n%r" > /home/analysis

Если есть вероятность, что $USER может включать %:

echo "analysis done by $USER on$(date +%n%D%n%r)" > /home/analysis

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .