Bash脚本预定义变量通过SSH执行命令时无法展开的问题
问题分析与解决
核心原因
问题出在单引号的变量解析特性:第三行用单引号包裹SSH命令时,本地的$CLIP变量不会被Shell解析,远程服务器会尝试读取自身环境中的$CLIP(该变量为空),所以最终文件内容为空。
两种解决办法
- 方法一:将单引号改为双引号,让本地Shell先解析变量再传递给远程
#!/bin/bash CLIP=$(termux-clipboard-get) ssh user@ip "cat>~/Scripts/clip.log<<<$CLIP" - 方法二:通过管道直接传递内容,避免变量解析问题(更简洁)
#!/bin/bash termux-clipboard-get | ssh user@ip 'cat>~/Scripts/clip.log'
验证要点
- 执行
echo $CLIP能正常输出内容,说明本地变量获取没有问题。 - 替换为固定字符串能正常写入,说明远程SSH连接和文件写入逻辑是正常的,问题仅在于变量解析。
内容的提问来源于stack exchange,提问作者domain deprevation
相关产品推荐
相关产品推荐

