如何实现git status输出echo打印、邮件发送及远程ssh调用?
问题1:捕获git status输出并打印/发邮件
你的代码出错原因是调用变量时未加$符号,直接输出了output字符串本身,且变量未加双引号包裹会丢失换行格式,修正后的实现如下:
clear # 捕获git status输出到变量 output="$(git status)" # 正确打印输出,双引号保留原始换行格式 echo "$output" # 直接作为邮件内容发送示例(需提前配置好mailx/sendmail服务) echo "$output" | mail -s "Git仓库状态报告" 收件人邮箱地址
问题2:SSH远程执行上述操作的实现方案
你使用的here document(<<EOF)格式需要注意转义规则,避免本地变量提前解析,推荐给EOF加单引号隔离本地与远程变量环境,完整示例如下:
# 提前定义远程连接参数 SSHUSER="远程服务器用户名" LIVE_HOST="远程服务器IP/域名" # 远程执行命令并捕获返回结果 remote_git_status=$(ssh "${SSHUSER}"@"${LIVE_HOST}" <<'EOF' # 远程端先切换到目标git仓库目录 cd /远程服务器上的Git仓库绝对路径 git status EOF ) # 本地操作返回结果 echo "$remote_git_status" # 发邮件示例 echo "$remote_git_status" | mail -s "远程服务器Git状态报告" 收件人邮箱地址
- 注意项:
<<'EOF'的单引号必须保留,如果你需要在远程执行块中传入本地变量,再去掉单引号,同时给需要远程解析的变量加反斜杠转义即可,比如\$var。
内容的提问来源于stack exchange,提问作者TheTom
相关产品推荐
相关产品推荐

