Dynamic variable names in Bash -


i confused bash script.

i have following code:

function grep_search() {     magic_way_to_define_magic_variable_$1=`ls | tail -1`     echo $magic_variable_$1 } 

i want able create variable name containing first argument of command , bearing value of e.g. last line of ls.

so illustrate want:

$ ls | tail -1 stack-overflow.txt  $ grep_search() open_box stack-overflow.txt 

so, how should define/declare $magic_way_to_define_magic_variable_$1 , how should call within script?

i have tried eval, ${...}, \$${...}, still confused.

use associative array, command names keys.

# requires bash 4, though declare -a magic_variable=()  function grep_search() {     magic_variable[$1]=$( ls | tail -1 )     echo ${magic_variable[$1]} } 

if can't use associative arrays (e.g., must support bash 3), can use declare create dynamic variable names:

declare "magic_variable_$1=$(ls | tail -1)" 

and use indirect parameter expansion access value.

var="magic_variable_$1" echo "${!var}" 

Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -