如何在Bash循环中仅输出一次变量a,后续仅输出循环变量i
解决方法:只在开头打印一次变量a
没问题,这有几种简单的方式实现你想要的输出效果:
方法1:先打印a,再循环打印i(控制换行)
直接把变量a的打印放在循环外面,然后循环里只打印i,用echo -n来避免每次打印自动换行:
a=$(echo "lol") echo -n "$a " # -n 阻止自动添加换行,末尾加空格分隔后续内容 for i in {1..3}; do echo -n "$i " done echo # 最后手动添加换行,让输出格式更规范
输出结果:
lol 1 2 3
方法2:收集循环内容后一次性打印
先把循环里的所有i值收集到一个变量中,最后和a一起打印,这样能避免末尾多余的空格:
a=$(echo "lol") output="" for i in {1..3}; do output="$output $i" done echo "$a$output"
输出结果:
lol 1 2 3
方法3:用printf精准控制输出
printf比echo更适合格式化输出,能精准控制空格和换行:
a=$(echo "lol") printf "%s" "$a" # 先打印a,不换行 for i in {1..3}; do printf " %s" "$i" # 每个i前加空格,不换行 done printf "\n" # 最后添加换行
输出结果:
lol 1 2 3
为什么原代码会重复打印a?
你的原代码中,echo $a && echo $i是放在循环体内部的,所以每次循环都会执行这两个命令,导致a被重复打印3次。把a的打印移到循环外面就能解决这个问题啦~
内容的提问来源于stack exchange,提问作者Paillou
相关产品推荐
相关产品推荐

