如何在字符串中的每个单词上添加单引号

时间:2018-06-19 15:26:11

标签: bash shell unix delimited-text

我的变量中有几个参数。我想用单引号将每个变量替换,并用逗号分隔。

var_list=emp location  branch.

我希望输出如下:

var_list='emp', 'location',  'branch'

2 个答案:

答案 0 :(得分:1)

使用Bash参数扩展

delimited="'${var_list//[[:space:]]/"','"}'"

如果字符串中有多个空格,请使用扩展的globbing:

shopt -s extglob
delimited="'${var_list//+([[:space:]])/"','"}'"

使用数组

words=($var_list)                           # create array from string, using word splitting
printf -v delimited ",'%s'" "${words[@]}"   # yields ",'one','two',..."
delimited=${delimited:1}                    # remove the leading ','

使用循环

delim=''
for word in $var_list; do                   # rely on word splitting by shell
  delimited="$delimited$delim'$word'"
  delim=", "
done

相关:

答案 1 :(得分:0)

谢谢@codeforester 我尝试了第一种方法

delimited="'${var_list//[[:space:]]/"','"}'"

但它不起作用。我得到了

'word_1"', '"word_2"', '"word_3'

然后我修改为声明

delimited="'${var_list//[[:space:]]/','}'"

它工作正常。

'word_1', 'word_2', 'word_3'