You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shell脚本执行提示Permission denied问题求助

问题分析与快速解决

嘿,我一眼就瞅出问题根源了——这跟你的myfile权限完全没关系!报错是因为脚本里的.. process f ..这行是占位符,shell把..当成了要执行的命令,但..其实是指向上级目录的路径,根本不是可执行程序,所以每次循环都会触发权限拒绝的错误,重复8次正好对应你myfile里的8行内容(包括最后那个*)。

具体修复步骤

  1. 替换占位符为实际处理逻辑
    把脚本里的.. process f ..换成你真正要对每行内容执行的操作。比如只是想打印每行内容的话,改成echo "$f"就行。修正后的完整脚本如下:
#!/bin/sh
# while3b.sh
while f=`line`
do
    echo "$f"
done < ./myfile

如果有其他处理需求(比如字符串替换、写入其他文件),直接把echo "$f"换成对应的命令就好。

  1. 给脚本添加执行权限(可选但推荐)
    如果还没给while3b.sh加执行权限,可以跑这条命令:
chmod +x while3b.sh

之后直接输入./while3b.sh就能执行脚本,不用每次都敲sh while3b.sh。

额外说明

  • 你用ls -al看到myfile的权限是-rwxrwxrwx,这个权限完全没问题——脚本只是读取它的内容,只要有读权限(r)就足够,这里的报错和myfile一点关系都没有。
  • line命令的作用是从输入流(这里就是重定向过来的myfile)逐行读取内容,每次循环把读取到的行赋值给变量f,直到文件读取完毕为止。

内容的提问来源于stack exchange,提问作者shanechiu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:19:52