arrays - 不能用参数扩展替换字符串中的空格字符
问题描述
我想通过对它们使用参数扩展语法来连接数组元素,并期望以下代码可以工作:
declare -a nums=( {1..10} )
echo ${nums[@]// /,}
1 2 3 4 5 6 7 8 9 10
#but
echo ${nums[@]//1/,}
, 2 3 4 5 6 7 8 9 10
我可以在空白处进行替换吗?
解决方案
${nums[@]}"
不是一个字符串,而是一个由 10 个数字组成的数组,这就是用逗号替换空格不起作用的原因,因为数组中没有空格。
您可以在字符串中获取数组内容并进行字符串替换:
declare -a nums=( 1 2 3 4 5 6 7 8 9 10 )
s="${nums[*]}"
echo "${s// /,}"
1,2,3,4,5,6,7,8,9,10
或一个班轮:
IFS=, && printf '%s\n' "${nums[*]}" && unset IFS
推荐阅读
- python - Python DataFrame 将条件应用于行和列
- lua - 是否有设置两个鼠标按钮来激活脚本的功能?
- python - base64 编码不接受 mime 消息
- c++ - 如何解释动态分配二维数组时有时会发生分段错误?
- listview - Flutter 有状态的代码问题。在 setstate 中放什么?
- javascript - 如果 Ajax 调用失败,如何禁用 Vue 组件
- php - 添加 IF 语句时 Laravel 出错
- terraform - 将 null_data_source 输出输出为普通地图,而不是 terraform 中的地图数组
- javascript - clearInterval 不停止间隔操作
- java - { 需要在列表视图中仅显示使用互联网连接的已安装应用程序