Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

storing passed arguments in separate variables -shell scripting

In my script "script.sh" , I want to store 1st and 2nd argument to some variable and then store the rest to another separate variable. What command I must use to implement this task? Note that the number of arguments that is passed to a script will vary.

When I run the command in console

./script.sh abc def ghi jkl mn o p qrs xxx   #It can have any number of arguments

In this case, I want my script to store "abc" and "def" in one variable. "ghi jkl mn o p qrs xxx" should be stored in another variable.

like image 981
Nathan Pk Avatar asked Dec 13 '12 22:12

Nathan Pk


2 Answers

If you just want to concatenate the arguments:

#!/bin/sh

first_two="$1 $2"  # Store the first two arguments
shift              # Discard the first argument
shift              # Discard the 2nd argument
remainder="$*"     # Store the remaining arguments

Note that this destroys the original positional arguments, and they cannot be reliably reconstructed. A little more work is required if that is desired:

#!/bin/sh

first_two="$1 $2"  # Store the first two arguments
a="$1"; b="$2"     # Store the first two argument separately
shift              # Discard the first argument
shift              # Discard the 2nd argument
remainder="$*"     # Store the remaining arguments
set "$a" "$b" "$@" # Restore the positional arguments
like image 160
William Pursell Avatar answered Nov 23 '22 22:11

William Pursell


Slice the $@ array.

var1=("${@:1:2}")
var2=("${@:3}")
like image 42
Ignacio Vazquez-Abrams Avatar answered Nov 23 '22 23:11

Ignacio Vazquez-Abrams