Bash: Control argument grouping in shell variables? -
i have programme accepts argument of style -g "hello world".
for programme work correctly, -g , "hello world" have 2 separate arguments.
the shell script below thought automate something:
myprog=/path/to/bin myarg=-g\ \"hello\ world\" "$myprog" "$myarg" of course, doesn't work because -g "hello world"is treated single argument bash.
one solution split -g , "hello world" straight in shell script have like:
myprog=/path/to/bin myarg1=-g myarg2=\"hello\ world\" "$myprog" "$myarg1" "$myarg2" this work because 2 arguments treated such. however, because -g , "hello world" belong together, shell script kind of awkward. if there hundreds of arguments defined in script.
now question is, how can shell script treat 1 variable 2 arguments without splitting them 2 variables?
as @gniourf_gniourf said, best way handle array:
myprog=/path/to/bin myargs=(-g "hello world") "$myprog" "${myargs[@]}" the assignment statement defines myargs array 2 elements: "-g" , "hello world". "${arrayname[@]" idiom tells shell treat each element of array separate argument, without word-splitting or otherwise mangling them.
bash shell command-line-arguments grouping argument-passing
No comments:
Post a Comment