&引用`$@';:“不是有效的标识符”;bash脚本中出现错误

&引用`$@';:“不是有效的标识符”;bash脚本中出现错误,bash,shell,Bash,Shell,我正在编写一个shell脚本,该脚本允许用户在命令提示符中输入文件名,该脚本将定位可执行文件并确定是否可以执行这些文件。但是,当我尝试运行它时,会收到一条“第45行`$@:不是有效标识符”错误消息 这是我的第一个脚本,无法解决此错误。我希望脚本的其余部分是可以的,但是我还不能通过这个错误来测试它 非常感谢您的帮助 #!/bin/bash FINDALL=FALSE while : do case $1 in -a) FINDALL=TRUE

我正在编写一个shell脚本,该脚本允许用户在命令提示符中输入文件名,该脚本将定位可执行文件并确定是否可以执行这些文件。但是,当我尝试运行它时,会收到一条“第45行`$@:不是有效标识符”错误消息

这是我的第一个脚本,无法解决此错误。我希望脚本的其余部分是可以的,但是我还不能通过这个错误来测试它

非常感谢您的帮助

#!/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脚本,请找出如何关闭此功能,或者选择一个不这样做的文本编辑器。