Linux系统遍历.gz文件出现Permission denied错误解决求助
问题原因
你的报错核心是for循环的语法错误:$()是Bash的命令替换语法,括号内的内容会被Bash当做命令尝试执行,而你实际需求是匹配该路径下的所有.fq.gz文件作为遍历列表,不需要套$(),因此Bash尝试执行匹配到的gz文件才会报权限、执行格式错误。
另外你脚本开头的shebang行也写错了,分隔符应该是斜杠/而不是井号#。
修正后的脚本
#!/bin/bash # 可选:开启nullglob避免无匹配文件时把通配符本身当字符串处理 shopt -s nullglob for f1 in ~/Desktop/hawkfiles17/NG*.fq.gz do echo "${f1}" done
后续处理注意事项
- 不需要给
.fq.gz压缩文件加执行权限,你只需要给你编写的脚本本身加执行权限即可:chmod u+x 你的脚本文件名.sh - 如果后续需要读取.gz文件内容处理,不需要解压原文件,可以直接用
zcat/zgrep等工具直接操作,原.gz文件会保持原有格式不变,例如读取文件内容:zcat "${f1}"
内容的提问来源于stack exchange,提问作者Amy Houseman
相关产品推荐
相关产品推荐

