You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash for循环仅返回最后一个元素,如何输出所有元素并拼接字符串?

问题分析与解决方案

问题根源

  • 循环里每次给uniqueletters赋值都会覆盖之前的内容,所以最后只留下了最后一个参数CHINESE的结果
  • 你写的awk -v RS= '{$1=$1}1' | sed 's/ //g'完全没用:因为"${@:2}"里的每个参数本身就没有空格,这个处理不会改变任何内容

修复后的脚本

直接把第2个及以后的参数拼接起来就行,不需要多余的文本处理:

#!/bin/bash
uniqueletters=""
for i in "${@:2}"; do
    uniqueletters+="$i"
done
echo "$uniqueletters"

更简洁的写法

用Bash的参数扩展特性,一行就能搞定:

#!/bin/bash
printf "%s" "${@:2}"
echo

或者用管道处理(会多启动一个进程,效率稍低):

#!/bin/bash
echo "${*:2}" | tr -d ' '

测试结果

传入参数 7216859340 FRENCH ARABIC CHINESE 时,上面的脚本都会输出:

FRENCHARABICCHINESE

内容的提问来源于stack exchange,提问作者GJO2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 15:00:49