While executing shell scripts, how to know which line number it's executing,

bash, shell

Solution

You can set the `PS4` variable to cause `set -x` output to include the line number:

PS4=':${LINENO}+'
set -x

This will put the line number before each line as it executes:

:4+command here
:5+other command

It's important to have some sigil character (such as a `+` in my examples) after your variable expansions in `PS4`, because that last character is repeated to show nesting depth. That is, if you call a function, and that function invokes a command, the output from `set -x` will report it like so:

:3+++command run within a function called from a function
:8++command run within a function
:19+line after the function was called

If multiple files are involved in running your script, you might want to include the `BASH_SOURCE` variable as opposed to only `LINENO` (assuming this really is a bash script, as opposed to `/bin/sh` -- be sure your script starts with `#!/bin/bash`!):

PS4=':${BASH_SOURCE}:${LINENO}+'
set -x

Problem

While executing shell scripts, how to know which line number it's executing, do have write a wrapper , where i can execute a shell scripts from a shell scripts and to know which line number it's executing.

Original source