shift command in Bash is used to shift the positional parameters to the left, discarding the value of
$1 and moving the remaining arguments (
$3, and so on) to lower positions (
$2, and so on). It effectively shifts the values of the command-line arguments, allowing you to access and process them in a sequential manner.
The syntax of the
shift command is simply:
n argument specifies the number of positions to shift. If
n is not provided, the default value is 1, which means shifting the positional parameters one position to the left.
Here’s an example to illustrate the usage of the
#!/bin/bash echo "Original arguments:" echo "Argument 1: $1" echo "Argument 2: $2" echo "Argument 3: $3" shift 2 echo "Shifted arguments:" echo "Argument 1: $1" echo "Argument 2: $2"
When you run this script with three command-line arguments (
./my_script.sh arg1 arg2 arg3), the output will be:
Original arguments: Argument 1: arg1 Argument 2: arg2 Argument 3: arg3 Shifted arguments: Argument 1: arg3 Argument 2:
In this example, after the
shift 2 command, the values of
$2 are discarded, and the remaining arguments are shifted to lower positions.
$3 becomes the new
$2 becomes empty.
shift command is useful when you need to process a variable number of command-line arguments in a loop or when you want to focus on a subset of the arguments. By shifting the positional parameters, you can iterate through the arguments or access specific arguments based on your script’s requirements.