【问题标题】:unexpected token while running the shell script运行 shell 脚本时出现意外令牌
【发布时间】:2020-10-21 13:33:52
【问题描述】:

这里是shell脚本sn-p。

# OSX hack to CLASSPATH
JIKESPATH=
if [ `uname -s` = "Darwin" ]; then
  OSXHACK="/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib"
  if [ -d "$OSXHACK" ]; then
    for i in "$OSXHACK"/*.jar; 
    do
      JIKESPATH="$JIKESPATH":"$i"
    done
  fi
fi

不确定这段代码到底是什么问题我在运行脚本时遇到了这个错误

'Users/administrator/Desktop/dce/external/tomcat/bin/setclasspath.sh: line 87: syntax error near unexpected token `
'Users/administrator/Desktop/dce/external/tomcat/bin/setclasspath.sh: line 87: `    for i in "$OSXHACK"/*.jar;

我想知道究竟是什么导致了这个问题。

~~ 使用@DuncG 答案的其他错误。

'Users/administrator/Desktop/dce/external/tomcat/bin/setclasspath.sh: line 88: syntax error near unexpected token `do
'Users/administrator/Desktop/dce/external/tomcat/bin/setclasspath.sh: line 88: `    do

【问题讨论】:

    标签: java macos shell


    【解决方案1】:

    不确定,但您的* 似乎没有解决。更改为子命令将确保扩展通配符:

    if [ -d "$OSXHACK" ]; then
        for i in `ls $OSXHACK/*.jar`
        do
          JIKESPATH="$JIKESPATH":"$i"
        done
    fi
    

    【讨论】:

    • 感谢您的回答,这似乎避免了较旧的问题,但我现在遇到了一个新错误〜在问题中更新
    • 谢谢,但我通过再次确保使用 doc2unix 将文件转换为 Unix 格式来解决此问题。
    • @DuncG :创建子进程以在内部运行 ls 毫无意义。相反,这会在不太可能的情况下破坏逻辑,即存在嵌入空格的文件名。
    • 是的 - for i in "$OSXHACK"/*.jar 应该可以工作,也许这个问题是因为另一个 doc2unix 问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 2021-06-26
    • 2017-08-26
    • 2018-10-31
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    相关资源
    最近更新 更多