У меня есть сценарий test.sh
:
#!/bin/bash
declare -x "v"="24127"
echo "$v" #works anyway
eval echo "$v" #works anyway
eval "$@" #works fine if not in second eval
"$@" #works same as above but without && and | support
Если я назову этот сценарий так: ./test.sh echo \$v
он работает нормально, но таким образом &&
и |
(например, ./test.sh echo \$v \&\& echo not works
) не работают, если я передаю их в качестве аргументов, поэтому я попытался использовать eval
, и проблема возникает, когда я вызываю этот скрипт из другого скрипта, например так: eval test.sh echo \$v
, мне нужно вызывать их таким образом дважды, так как я передаю их вдвое больше параметров (команд) с &&
и |
. Так почему двойной вызов этого скрипта из eval приводит к потере переменных внутри скрипта eval? Любой способ исправить это или любой другой обходной путь для выполнения аргументов в качестве команд с возможностью использовать переменные, которые объявлены в том же сценарии?