linux - Setting an argument with bash -
i run simple bash command:
rpm -uvh --define "_transaction_color 3" mypackage.rpm
which works properly.
but i'm trying script bash file, , create more flexible:
#!/bin/bash install_cmd=rpm install_opt="-uvh --define '_transaction_color 3'" ${install_cmd} ${install_opt} mypackage.rpm
however, keeps generating error:
error: macro % has illegal name (%define)
the error coming how --define
, quoted _transaction_color
handled. i've tried variety of escaping, different phrasing, making install_opt
array, handled ${install_opt[@]}
.
so far, attempts have not worked. clearly, want extremely simple. i'm not sure how accomplish it.
how can bash handle --define
argument properly?
the problem quotes not processed after variable substitution. looks you're trying define macro named '_transaction_color
.
try:
eval "${install_cmd} ${install_opt} mypackage.rpm"
however, improve solution utilize array:
install_opt=(-uvh --define '_transaction_color 3')
then:
${install_cmd} "${install_opt[$@]}" mypackage.rpm
it's of import set ${install_opt[@]}
within double quotes requoting.
linux bash unix
No comments:
Post a Comment