Bash Shell选取CSV的替换值,你想制作一个由逗号分隔的值列表,但不希望开头或结尾处出现逗号。
解决方案
如果在循环内部用 LIST="{LIST},{NEWVAL}"
构建该列表,那么第一次循环(此时 LIST 为空)过后会得到一个前导逗号。你可以对 LIST 进行特殊的初始化处理,以便它在进入循环前就先得到第一个值,但如果觉得这种方法不实用,或是为了避免重复代码(用于得到新值),你可以改用 bash 中的 ${:+}
语法。
LIST="${LIST}${LIST:+,}${NEWVAL}"
如果 {LIST}
为空或不存在,那么 $LIST
的两个表达式不会产生任何内容。这就意味着,第一次循环过后,LIST 中保存的只有 NEWVAL 的值。如果 LIST 不为空,则第二个表达式 ${LIST:+,}
会被替换为逗号,将先前的值与新值分隔开来。
下面的代码片段用于读取并构建 CSV 列表。
#
# 一次读取一个值,构建以逗号分隔的值列表
#
while read NEWVAL
do
LIST="${LIST}${LIST:+,}${NEWVAL}"
done
echo $LIST
酷客网相关文章:
评论前必须登录!
注册