【问题标题】:Why am I getting a syntax near unexpected token newline error?为什么我在意外的令牌换行错误附近出现语法?
【发布时间】:2014-09-11 07:10:02
【问题描述】:

我正在尝试在 Ubuntu 中使用 android 开发工具包创建一个 .bashrc 文件。唯一的问题是,当我编辑/添加到 bashrc 文件时,我收到“意外令牌换行符附近的语法错误”。我发布了错误所在的代码,特别是在 android SDK home token 和 android NDK token 之间。感谢您的帮助

 #Android SDK Home
  export ANDROID_SDK=</Documents/adt-bundle-linux-x86_64-20140702>
 #ANDROID NDK Home
 export NDK=~/android-ndk-r10b
 export PATH=$PATH: $ANDROID_SDK/tools:$ANDROID_SDK/platform-tools

【问题讨论】:

  • 别忘了点击旁边的✔ 来接受答案。这意味着您的问题被标记为已解决。

标签: linux bash


【解决方案1】:

我猜你在某处的指南中读过类似的内容:

将以下行添加到您的 .bashrc 文件中:

export ANDROID_SDK=<path/to/your/SDK>
# etc.

&lt; &gt; 是占位符,即&lt;replace this bit&gt;。您不需要将路径放在其中,实际上您应该删除它们,因为它们是无效的语法(这会导致您提到的错误)。此外,您应该稍后删除$PATH: $ANDROID_SDK 之间的空格:

#Android SDK Home
export ANDROID_SDK="/Documents/adt-bundle-linux-x86_64-20140702"
#ANDROID NDK Home
export NDK="$HOME/android-ndk-r10b"
export PATH="$PATH:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools"

更具体地说,错误是由export 行末尾的&gt; 引起的,因为这意味着“将命令的输出重定向到以下文件描述符”。然后 Bash 期待文件描述符的名称,但它找到的只是换行符。开头的&lt; 也有问题,因为它的意思是“将此文件描述符的内容重定向到命令”,这对您的情况没有任何用处。详情请见this wiki page

顺便说一句,使用双引号并没有什么坏处,事实上,我们鼓励使用双引号。使用它们意味着在目录名称包含空格的情况下不会发生分词。我在您的作业周围添加了一些并将~ 更改为$HOME,以便它仍然可以执行您想要的操作(~ 将在双引号内逐字解释,而$HOME 将扩展为您的主目录)。

【讨论】:

  • 好吧,修复了,现在当我尝试使用 source 命令使用它时,什么也没有发生 :(
  • 您期望发生什么?它应该做的就是设置这些环境变量的值。如果您执行echo "$PATH",您应该会看到您的目录已被添加。
  • 哇哦。是的,目录已被添加。我做了很多次,以为会发生其他事情,所以它多次添加了目录......
  • 您知道,我在回答中添加了一些解释。希望你觉得它有用。
【解决方案2】:

尖括号不能以这种方式使用。

【讨论】:

    猜你喜欢
    • 2022-01-18
    • 1970-01-01
    • 2015-01-19
    • 2013-01-22
    • 2017-08-26
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多