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

SSH远程执行循环序列失效:仅迭代i=12,是否需转义字符?

问题与解决方案

问题现象

通过SSH远程执行循环命令时,原本预期遍历{01..12}序列,对每个host-prv$i执行modpkg和runpkg命令,但实际仅以i=12进行迭代,循环序列失效。

原执行命令:

ssh 10.10.10.10 "for i in {01..12}; do modpkg -e -n host-prv$i; runpkg -n host-prv$i; done"

问题原因

使用双引号包裹远程命令时,本地Shell会优先解析命令中的变量$i。如果本地环境中$i的最终值为12(或之前的会话残留了该值),发送到远程服务器的命令里$i已经被替换成12,导致远程执行的循环逻辑失效,仅处理host-prv12。

解决方法

改用单引号包裹远程命令,单引号会阻止本地Shell解析内部变量,变量替换操作将交给远程服务器的Shell完成,从而保证循环逻辑正常执行。

修正后的命令:

ssh 10.10.10.10 'for i in {01..12}; do modpkg -e -n host-prv$i; runpkg -n host-prv$i; done'

感谢@dave_thompson_085提供的解决方案。

内容的提问来源于stack exchange,提问作者Luiz Bom

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:37:35