bash - 这行 "BUILD_TARGET=${1:-none}"在 shell 脚本中意味着什么?

标签 bash shell cygwin

我刚开始学习 shell 脚本,所以如果这太基础而不能在这里问,请原谅我。我想运行这个 sh 脚本 (https://github.com/daid/Cura/blob/SteamEngine/package.sh)。 但我无法理解这一行 (BUILD_TARGET=${1:-none}) 的作用?

摘录如下:

#!/usr/bin/env bash

set -e
set -u

# This script is to package the Cura package for Windows/Linux and Mac OS X
# This script should run under Linux and Mac OS X, as well as Windows with Cygwin.

#############################
# CONFIGURATION
#############################

##Select the build target
BUILD_TARGET=${1:-none}
#BUILD_TARGET=win32
#BUILD_TARGET=darwin
#BUILD_TARGET=debian_i386
#BUILD_TARGET=debian_amd64
#BUILD_TARGET=debian_armhf
#BUILD_TARGET=freebsd

##Do we need to create the final archive
ARCHIVE_FOR_DISTRIBUTION=1
##Which version name are we appending to the final archive
export BUILD_NAME=15.04.6
TARGET_DIR=Cura-${BUILD_NAME}-${BUILD_TARGET}

##Which versions of external programs to use
WIN_PORTABLE_PY_VERSION=2.7.2.1

当我试图通过在 Cygwin 中运行来查看它是如何工作时,它抛出以下错误,

$ bash package.sh
package.sh: line 2: $'\r': command not found
: invalid option 3: set: -
set: usage: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
: invalid option 4: set: -
set: usage: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
package.sh: line 5: $'\r': command not found
package.sh: line 8: $'\r': command not found
package.sh: line 12: $'\r': command not found
package.sh: line 21: $'\r': command not found
package.sh: line 27: $'\r': command not found
package.sh: line 30: $'\r': command not found
package.sh: line 48: syntax error near unexpected token `$'{\r''
'ackage.sh: line 48: `{

我在 Cygwin 中缺少什么?

更新 1:我通过将行结尾转换为与 unix 兼容的结尾来解决“找不到命令”的问题。更多信息可以在这里找到,'\r': command not found - .bashrc / .bash_profile

最佳答案

$1 是第一个命令行参数

${1:-none} 表示如果第一个命令行参数未设置或为空,则替换为“none”。
否则,值为第一个命令行参数被替换。


更多信息,查看[ shell parameter expansion ] .

关于bash - 这行 "BUILD_TARGET=${1:-none}"在 shell 脚本中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38260927/

相关文章:

linux - 将新 xterm 的输出重定向回原始终端

linux - 打包一个自己开发的linux app

python - 通过 jenkins 将参数传递给 shell 脚本时出现问题

linux - 添加 .env 变量以运行给定命令

linux - 在不更改目录的情况下重定向程序输出

linux - Grep 用于文件中的多个模式

linux - 使用 shell 脚本从 userB 以 userA 身份启动服务

windows - Cygwin 中的 Python 3.x?

android - 无法建立libmupdf.so

c++ - DOS-报错: Bad file number