在Git Bash中实现GPG加密时出现语法错误,寻求解决方法
问题分析与修正
原脚本存在几个关键错误,导致gpg报错:
变量赋值语法完全错误:
$1="cd C:\Users\XXXX\Documents"是无效写法,$1是脚本的位置参数(运行脚本时传入的第一个参数),不能这么赋值。切换目录直接用cd命令即可,同时Git Bash中Windows路径要改成Unix风格(C:\转成/c/,反斜杠换正斜杠)。gpg的--output参数不能用通配符:
--output *.csv.gpg无法让gpg自动为每个输入的csv文件生成对应输出,gpg一次只能处理单个输入文件对应单个输出文件,必须逐个循环处理。可选优化:
dir是Windows命令,Git Bash中用ls更符合bash环境习惯。
修正后的脚本:
#!/bin/bash # 切换到目标目录,使用Git Bash兼容的Unix风格路径 cd /c/Users/XXXX/Documents # 列出目录内容(可选,验证是否在正确目录) ls # 循环遍历每个CSV文件,逐个加密 for csv_file in *.csv; do # 先检查文件确实存在,避免无CSV文件时执行出错 if [ -f "$csv_file" ]; then # 生成对应输出文件名:原文件名 + .gpg gpg --encrypt --output "${csv_file}.gpg" --recipient username "$csv_file" fi done
运行这个脚本后,目录下每个xxx.csv文件都会被加密成xxx.csv.gpg,符合你的需求。
内容的提问来源于stack exchange,提问作者Ritwik Mohapatra
相关产品推荐
相关产品推荐

