You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将rsync选项存为变量?变量引用报错求助

正确将rsync选项存入变量的方法

问题原因

你遇到的报错核心是单引号会阻止Bash解析变量:在'ssh -p 22 -i "$myVar"/ssh_key/my_ssh_key ...'这个单引号包裹的字符串里,$myVar不会被替换为实际路径/home/user/proj/,ssh会把$myVar当成字面量路径,自然找不到对应的密钥文件。

解决方案

把包裹ssh参数的单引号换成双引号,让Bash正常解析$myVar变量,同时保持整个-e的参数作为数组的一个元素:

myVar="/home/user/proj/"
IP="192.168.1.222"

# 用双引号允许变量展开,整个ssh命令作为-e的参数
options=(-rvz -e "ssh -p 22 -i $myVar/ssh_key/my_ssh_key -o StrictHostKeyChecking=no")
rsync "${options[@]}" /home/user/proj/ pi@${IP}:/home/pi/proj/

如果$myVar的值包含空格或特殊字符,可以给路径额外加单引号,避免解析异常:

options=(-rvz -e "ssh -p 22 -i '$myVar/ssh_key/my_ssh_key' -o StrictHostKeyChecking=no")

验证逻辑

当你直接写死路径时,ssh能拿到正确的密钥路径;换成变量后,只要让Bash在数组赋值阶段就把$myVar替换成实际路径,rsync调用时就能和写死的命令效果完全一致。

内容的提问来源于stack exchange,提问作者Andrei Cherniaev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 06:22:56