&引用`$@';:“不是有效的标识符”;bash脚本中出现错误
我正在编写一个shell脚本,该脚本允许用户在命令提示符中输入文件名,该脚本将定位可执行文件并确定是否可以执行这些文件。但是,当我尝试运行它时,会收到一条“第45行`$@:不是有效标识符”错误消息 这是我的第一个脚本,无法解决此错误。我希望脚本的其余部分是可以的,但是我还不能通过这个错误来测试它 非常感谢您的帮助&引用`$@';:“不是有效的标识符”;bash脚本中出现错误,bash,shell,Bash,Shell,我正在编写一个shell脚本,该脚本允许用户在命令提示符中输入文件名,该脚本将定位可执行文件并确定是否可以执行这些文件。但是,当我尝试运行它时,会收到一条“第45行`$@:不是有效标识符”错误消息 这是我的第一个脚本,无法解决此错误。我希望脚本的其余部分是可以的,但是我还不能通过这个错误来测试它 非常感谢您的帮助 #!/bin/bash FINDALL=FALSE while : do case $1 in -a) FINDALL=TRUE
#!/bin/bash
FINDALL=FALSE
while :
do
case $1 in
-a) FINDALL=TRUE
shift ;;
-h) echo “Usage $0 [-a] commands…”
exit 0 ;;
*) break ;;
esac
done
for $@ in $file
do
case $file in
*/*) if [ -x “$file” ]
then
echo $file
elif [ -d “$file” ]
then
echo $file is NOT found
fi
shift ;;
*) FOUND=FALSE ;;
esac
done
case $PATH in
:*) PATH=”.:$PATH” ;;
*::*) PATH=`echo $PATH | sed -e ‘s/::/:.:/g’` ;;
*:) PATH=”$PATH:.” ;;
esac
command=”$1”
IFS=$OLDIFS
IFS=:
set -- $PATH
IFS=$OLDIFS
case $command in
*/*) echo $command ;;
*) FOUND=FALSE
for P
do
if [ ! -d “$P/$command” -a -x “$P/$command” ]
then
FOUND=TRUE
echo $command
break
fi
done
if [ “$FOUND” = FALSE ]
then
echo “Command $command not found in your search path”
fi ;;
esac
您不是指$@中的文件的
?否则,这个循环就没有任何意义了。而P的也没有多大意义。这应该做什么呢?对于您的第一个评论,切换这两个选项确实允许脚本运行,所以谢谢!至于第二条评论,那部分脚本是由我的教授提供的。从“case$PATH in”到下面的所有内容。从注释中,我相信P代表路径。我不确定这是否正确,但我们的笔记说要实现分配的代码。@Someprogrammerdude:for P
是“$@”
中P的的快捷方式。发布的脚本有很多花哨的unicode引号(如“
和”
),而不是简单的ASCII引号(如“
和”
)。如果它们在实际脚本中是这样的,它们将无法正常工作,因为shell不会将花哨的引号识别为shell语法,只将它们视为随机字符。一些文本编辑器“很有帮助”将您的引用翻译成奇特的版本——要编辑shell脚本,请找出如何关闭此功能,或者选择一个不这样做的文本编辑器。