Shell脚本执行提示Permission denied问题求助
问题分析与快速解决
嘿,我一眼就瞅出问题根源了——这跟你的myfile权限完全没关系!报错是因为脚本里的.. process f ..这行是占位符,shell把..当成了要执行的命令,但..其实是指向上级目录的路径,根本不是可执行程序,所以每次循环都会触发权限拒绝的错误,重复8次正好对应你myfile里的8行内容(包括最后那个*)。
具体修复步骤
- 替换占位符为实际处理逻辑
把脚本里的.. process f ..换成你真正要对每行内容执行的操作。比如只是想打印每行内容的话,改成echo "$f"就行。修正后的完整脚本如下:
#!/bin/sh # while3b.sh while f=`line` do echo "$f" done < ./myfile
如果有其他处理需求(比如字符串替换、写入其他文件),直接把echo "$f"换成对应的命令就好。
- 给脚本添加执行权限(可选但推荐)
如果还没给while3b.sh加执行权限,可以跑这条命令:
chmod +x while3b.sh
之后直接输入./while3b.sh就能执行脚本,不用每次都敲sh while3b.sh。
额外说明
- 你用
ls -al看到myfile的权限是-rwxrwxrwx,这个权限完全没问题——脚本只是读取它的内容,只要有读权限(r)就足够,这里的报错和myfile一点关系都没有。 line命令的作用是从输入流(这里就是重定向过来的myfile)逐行读取内容,每次循环把读取到的行赋值给变量f,直到文件读取完毕为止。
内容的提问来源于stack exchange,提问作者shanechiu
相关产品推荐
相关产品推荐

