This question was migrated来自服务器故障,因为它可以在堆栈溢出时得到响应。
Migrated四年前。
如果设置了
如果未设置
如果
但是,有时描述包括引号和其他特殊字符,所以我不想这样做:
如果我在
如果
说明:
顺便说一下,如果不止一个论点需要这样的处理,我会采用@glenn jackman的方法。
Migrated四年前。
如果设置了
$FOO
,我想运行:cd "$OUTPUTDIR" && fpm -s dir -t rpm \
-a x86_64 \
--epoch "${PKGEPOCH}" \
-n "${PACKAGENAME}" \
--version "${PKGVERSION}" \
--iteration "${PKGRELEASE}" \
-C "$OUTPUTDIR/installroot" \
--description="${PKGDESCRIPTION}" \
.
如果未设置
$FOO
,则根本不想包含标志。如果
--description=
(空),程序将失败。但是,有时描述包括引号和其他特殊字符,所以我不想这样做:
if [[ -z "PKGDESCRIPTION" ]]; then
D=--description="${PKGDESCRIPTION}"
fi
cd "$OUTPUTDIR" && fpm -s dir -t rpm \
-a x86_64 \
--epoch "${PKGEPOCH}" \
-n "${PACKAGENAME}" \
--version "${PKGVERSION}" \
--iteration "${PKGRELEASE}" \
-C "$OUTPUTDIR/installroot" \
$D
.
如果我在
$D
周围加上引号,它就会变成一个额外的(空白)参数。如果
$PKGDESCRIPTION
包含特殊字符并且不生成空白参数,是否有一种方法可以做到这一点? 最佳答案
如果PKGDESCRIPTION是唯一需要这种条件处理的参数,则可以使用“alternate value”扩展:
[...] && fpm -s dir -t rpm \
[...] \
${PKGDESCRIPTION:+ --description="${PKGDESCRIPTION}"} \
.
说明:
:+
表示除非PKGDESCRIPTION设置为非空值,否则将扩展为空;如果设置为非空值,则扩展为--description="${PKGDESCRIPTION}"
,双引号使其忽略PKGDESCRIPTION值中的特殊字符。请注意,:+ --
中的空间是不需要的,但不会造成伤害,并且至少使它稍微容易阅读。顺便说一下,如果不止一个论点需要这样的处理,我会采用@glenn jackman的方法。
10-04 11:45