我想查看带有for循环的目录中的文件,但这就出现了。
echo: bad interpreter: No such file or directory
代码:
#!/bin/bash
count=0
dir=`pwd`
echo "$dir"
FILES=`ls $dir`
for file in $FILES
do
if [ -f $file ]
then
count=$(($count + 1))
fi
done
echo $count
答案 0 :(得分:20)
我遇到了同样的问题。删除#!/bin/bash
为我做了诀窍。似乎没有必要添加bash所在的位置,因为它位于系统路径上。
我找到了另一个解决方案here。变化
#!/bin/bash
的
#!/usr/bin/bash
答案 1 :(得分:6)
更好:
#!/bin/bash
count=0
dir="$PWD"
echo "$dir"
for file in "$dir"/*
do
if [[ -f $file ]]
then
((count++))
fi
done
echo $count
或最简单/最短的解决方案:
#!/bin/bash
echo "$PWD"
for file; do
[[ -f $file ]] && ((count++))
done
echo $count
答案 2 :(得分:2)
在我的情况下,bash脚本是在Windows PC上创建的,它在每个换行符前添加了一个回车符。 \ x0D \ x0A而不仅仅是\ x0A。我使用sed
只用LF替换了所有CRLF,我的脚本现在可以正常工作。
sed -i 's//\r/\n//\n/g' /path/to/file.sh
答案 3 :(得分:2)
child
很可能来自第一行echo: bad interpreter: No such file or directory
,称为shebang line。
#!...
行这一行提示shell用于运行文件的解释器。那可以是例如#!...
,或bash
((大致)是一个子集,因此很多东西都不起作用),或者基本上任何可以执行文件内容的东西 - Perl,Python,Ruby,Groovy ..
该行指向系统,例如在可执行文件时直接调用脚本:
sh
当文件没有后缀时,编辑人员经常使用它来识别正确的语法高亮 - 例如,Gedit就是这样做。
要覆盖该行,请将脚本作为参数提供给Bash:
./myScript.sh
或者,您可以“来源”它,这意味着,在Bash shell中,执行
之一bash myScript.sh
(大致)就像你自己粘贴命令一样。
答案 4 :(得分:1)
这是一个奇怪的错误。我建议尝试找到错误的来源。
有一件事是检查pwd命令。
type pwd
确保它是/ usr / bin / pwd或/ bin / pwd,并验证它不是脚本:
file /usr/bin/pwd
如果是脚本,我打赌它以
开头#!echo
答案 5 :(得分:1)
如果您确实使用Homebrew安装BASH,
删除
#!/bin/bash
就够了。
答案 6 :(得分:1)
我刚遇到相同的问题,发现我的错误出在我的第一行,有
#!bin/bash
代替
#!/bin/bash
答案 7 :(得分:0)
您可以使用命令
找到bash所在的位置whereis bash
并且您可以将bash路径复制到您看到错误解释器错误的路径。
答案 8 :(得分:0)
我已按照以下链接进行操作,问题已得到解决。
引用链接:script error - bad interpreter 实际上,每行末尾都有一个额外的 ^ M 符号。因此,将其删除后,对我来说效果很好。
希望有帮助!
答案 9 :(得分:0)
当文件不是unix格式时,也可能会发生此问题。尝试运行dos2unix重新设置文件,然后重试。
答案 10 :(得分:0)
因此,如果您将用户名组优先级从用户名更改为root,则应更改
#!/user/bin/bash
到
#!/bin/bash
检查您的用户组(我的用户名是rommi)
$ groups rommi
此命令将输出:
rommi : root adm cdrom sudo dip plugdev lxd lpadmin sambashare
由于我的用户名组优先级设置为root,因此我应该将脚本更改为
#!/bin/bash
我使用以下方法更改优先级组:
sudo usermod -g root rommi
如果groups rommi
命令输出:
rommi : rommi adm cdrom sudo dip plugdev lxd lpadmin sambashare
然后我的脚本应使用#!/usr/bin/bash
无法进行此更改将导致bad interpreter: No such file or directory
错误