Circle CI中rsync命令如何正确引用SSH_PORT环境变量?
解决Circle CI中rsync命令环境变量不解析的问题
核心问题是bash的单引号会阻止环境变量解析——你之前的写法用单引号包裹了ssh -p ${SSH_PORT},导致变量名被直接当作字符串,而非被替换为实际值。可以用以下两种方法解决:
方法1:用双引号包裹ssh命令
将原本的单引号替换为双引号,让shell正常解析变量:
- run: rsync -ru -e "ssh -p ${SSH_PORT}" ~/source/ $SSH_USER@$SSH_HOST:/dest
方法2:拼接引号保留部分字面量
如果需要保留部分单引号的字面量特性,可通过引号拼接让变量部分处于双引号中:
- run: rsync -ru -e 'ssh -p '"${SSH_PORT}"'' ~/source/ $SSH_USER@$SSH_HOST:/dest
验证变量是否正常加载
若不确定环境变量是否正确设置,可先添加打印步骤确认:
- run: echo "当前SSH_PORT值为: ${SSH_PORT}"
内容的提问来源于stack exchange,提问作者peterpie
相关产品推荐
相关产品推荐

