环境变量在 shell 脚本中是空的,但在 shell 中不是

Environmental variable is empty into shell script but not in shell

一个shell脚本检查了我的一些环境变量,但是这个代码:

if [ -z "$ANDROID_NDK" -o -z "$ANDROID_SDK" ]; then
    echo "You must define ANDROID_NDK, ANDROID_SDK before starting."
    echo "They must point to your NDK and SDK directories.\n"
    exit 1
fi

打印出 You must define ANDROID_NDK, ANDROID_SDK before starting. .....,而不是如果在 shell 中我写命令 echo $ANDROID_SDKecho $ANDROID_NDK 它给了我正确的结果。

我回答我自己的问题。 我尝试的是使用 osx 而不是 Linux 来编译 libvlc。 问题是我不知道为什么 unzip 无法提取 gradle.2.2.1.zip 文件,所以我认为我可以使用 sudo 来完成,但我是错误是因为 compile.sh 的执行在上面显示的代码中停止了,因为普通用户和 sudo 的环境变量不同。 最后,我解决了手动提取 gradle zip 文件并自行执行此命令的问题,而不是让 shell 脚本执行它们:

cd gradle-${GRADLE_VERSION}

./bin/gradle wrapper
checkfail "gradle: wrapper failed"

./gradlew -version
checkfail "gradle: wrapper failed"
cd ..
mkdir -p gradle
mv gradle-${GRADLE_VERSION}/gradle/wrapper/ gradle
mv gradle-${GRADLE_VERSION}/gradlew .
chmod +x gradlew
rm -rf gradle-${GRADLE_VERSION}-all.zip gradle-${GRADLE_VERSION}

基本上这个脚本应该在 Linux 上运行良好,但很明显解压缩在 OSX 上有一些问题。

我认为问题是 wget 由于配置错误而失败但创建了空的 zip 文件。然后,当使用 wget 重新启动脚本时,它会在没有警告的情况下创建 .1。

验证 wget 是否正常工作,删除文件夹中的每个 gradle-* 文件并重新启动 compile.sh。