0
我尝试添加设置-eu选项在我的剧本,但它抛出一个错误“未绑定变量的错误”入门的shell脚本绑定变量的错误
ssh -q [email protected]$server << EOF
set -eu
echo "proceeding diagnostics"
cd $CT_PATH
bundle exec cap -q -S instance=$instance demo deploy:all;
echo "completed process"
EOF
我需要添加-eu选项在脚本上,因为-u选项可以捕获不存在的变量。
感谢您对此的快速帮助
初始化
CT_PATH
或instance
你在哪里设置'CT_PATH'和'instance'值?如果你期望它们会从$ server上的环境继承,那么你需要使用'<<'EOF'',并且假设这些变量是在'.rc'文件中用'export'设置的来自'ssh'。祝你好运。 – shellter我从一个单独的脚本调用CT_PATH,实例名称从输入参数传递 – Ram
由于脚本中的唯一变量是'CT_PATH'和'instance',并且* bundle *不太可能引发此错误消息,我的猜测是这些变量中的一个没有定义。我建议你在'set -eu'之前输出它们的值,例如像这样:'echo $ {CT_PATH:-undefined},$ {instance:-undefined}'。 – user1934428