【问题标题】:"Command not found" when sourcing file with path variables使用路径变量获取文件时“找不到命令”
【发布时间】:2011-09-08 12:20:05
【问题描述】:

如果我运行这个脚本:

#!/bin/bash

PROJECT_PATH="/Users/hudson/workspace/Foo"
XCODE_PROJECT_FOLDER="${PROJECT_PATH}/CODE/APP/FOO_IOS"

echo ${PROJECT_PATH}
echo ${XCODE_PROJECT_FOLDER}

它显示:

/Users/hudson/workspace/Foo

/Users/hudson/workspace/Foo/CODE/APP/FOO_IOS

如果我将变量放在另一个文件中,请将其包含在主脚本文件中,然后运行它:

test.sh

#!/bin/bash

. "/Users/hudson/workspace/Foo/ota.sh"

echo ${PROJECT_PATH}
echo ${XCODE_PROJECT_FOLDER}

/Users/hudson/workspace/Foo/ota.sh

#!/bin/bash

PROJECT_PATH="/Users/hudson/workspace/Foo"
XCODE_PROJECT_FOLDER="${PROJECT_PATH}/CODE/APP/FOO_IOS"

我有这个输出:

:找不到命令 /Users/hudson/workspace/Foo/ota.sh:第 2 行:

/Users/hudson/workspace/Foo

/CODE/APP/FOO_IOSkspace/Foo

知道问题出在哪里吗?

  • 如果我将 ota.sh 放在与 test.sh 相同的文件夹中,效果会很好
  • 如果我不在 #!/bin/bash 和包含之间留空行,我不会收到 : command not foundpace/Foo/ota.sh: line 2 消息

【问题讨论】:

    标签: bash variables


    【解决方案1】:

    可能是错误的/混合的 unix/windows 行尾,请尝试使用 dos2unix 修复它。

    【讨论】:

    • 我编写脚本文件如下:我在 Windows 上使用 Notepad++ 编写它们,并通过 TightVNC 将文件内容复制/粘贴到 Mac 中的 XCode 中。如何协调行尾?
    • 在重新发布的ubuntu版本中,dos2unix被fromdostodos替换
    • @Mike:首先使用十六进制编辑器检查是否确实如此。使用 vi 或任何 unix 工具修复它,例如:perl -pi -e 's/\r\n?/\n/g'
    • @yi_H:我用PS编辑了我的帖子,这往往让我认为这不是一个结尾行问题
    • @Mike,你试过dos2unix 还是fromdos?此外,od -c filename 是查看文件中字符的便捷工具。
    【解决方案2】:

    尝试在vim 中打开文件,看看那里是否有任何特殊字符,例如退格。

    【讨论】:

    • 我刚做了,看不到任何奇怪的字符
    【解决方案3】:

    与上一个答案一样,可能是错误的/混合的 unix/windows 行尾。如果您使用的是 notepad++,正如 Mike 所提到的,在 notepadd++ 中,您可以通过选择 Edit 菜单,然后选择 EOL Conversion 来更改 EOL 字符。在阅读了迈克的评论之后,这就是解决了我也遇到过的操作提到的同样的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-17
      • 1970-01-01
      • 2016-04-18
      • 2021-06-05
      • 2013-10-26
      • 2018-09-29
      相关资源
      最近更新 更多