我正在尝试编写一个简单的bash脚本,该脚本将按以下方式执行
1 (UPDATE_NOT_AVAILABLE)
我正在使用这种方法在Go项目中的构建时传递一些参数。
该脚本的一个非常简单的版本是:
$ ./export.sh -n <my-file-name> -a <my-api-key>
如果#!/bin/bash
while getopts n:a option
do
case "${option}"
in
n) FILENAME=${OPTARG};;
a) APIKEY=${OPTARG};;
esac
done
if [ -z "$FILENAME" ]
then
FILENAME=downloader
fi
if [ -z "$APIKEY" ]
then
echo "[ERROR] Missing API key"
exit 1
fi
cd src && go build -o ../build/${FILENAME}.exe downloader -ldflags "-X api.APIServiceKey="${APIKEY}
不存在,我提供一个默认值,但是如果缺少FILENAME
,我想存在并显示一条消息。
使用所有参数运行脚本会引发错误,好像缺少APIKEY
。
答案 0 :(得分:0)
您在getopts
呼叫中缺少冒号。由于您期望有-a
的参数,因此在optstring中必须在其后加一个冒号:while getopts n:a: option
引用getopts手册页:
当选项需要选项参数时,getopts实用程序应 将其放在外壳变量OPTARG中。 [...]如果跟随字符 用
表示,该选项应具有以下参数: 应该作为单独的参数提供。