На самом деле вы не можете получить автоматические номера строк, но если вы хотите, чтобы какой-то вывод помог вам сориентироваться, вы можете использовать xtrace logging с номером строки в PS4
. Это будет чередовать журнал с командами и номерами строк, которые выполняются:
#!/bin/bash
exec 3>&1 4>&2
exec 1>/tmp/stdout.log
exec 2>/tmp/stderr.log
PS4='+ (Line $LINENO) '
set -x
echo "This goes to /tmp/stdout.log"
echo "This goes to /tmp/stderr.log" 1>&2
cmd1="$(uname -a)"
cmd2="$(uname +-a)"
exec 1>&3 2>&4
exec 3>&- 4>&-
Вот журнал ошибок, показывающий выполненные команды и номера строк, чтобы вам было легче видеть, откуда берется +-a
:
+ (Line 7) echo 'This goes to /tmp/stdout.log'
+ (Line 8) echo 'This goes to /tmp/stderr.log'
This goes to /tmp/stderr.log
++ (Line 9) uname -a
+ (Line 9) cmd1='Linux localhost 4.14.0-3-amd64 #1 SMP Debian 4.14.17-1 (2018-02-14) x86_64 GNU/Linux'
++ (Line 10) uname +-a
uname: extra operand ‘+-a’
Try 'uname --help' for more information.
+ (Line 10) cmd2=
+ (Line 11) exec