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

Bash脚本中如何在花括号{}内正确使用$变量

问题根因

Bash 的扩展执行优先级为花括号扩展早于变量扩展,执行{1..$numb}时,花括号扩展阶段$numb还未被替换为输入的实际数值,因此扩展不生效,最终会把{1..$numb}作为完整字符串处理。

最优解决方案:使用C风格for循环

这一方案兼容性好、无安全风险,直接替换原有for循环即可,修改后完整代码如下:

#!/bin/bash
read -p "How many files must there be built?" numb
for ((n=1; n<=numb; n++))
do
    echo "Building file $n"
    touch file$n.txt
done

可选解决方案:使用seq命令生成序列

也可以调用seq命令动态生成数字序列完成遍历:

for n in $(seq 1 $numb)
do
    echo "Building file $n"
    touch file$n.txt
done

注意:不推荐使用eval {1..$numb}的方式实现效果,eval会执行任意输入内容,存在命令注入安全隐患。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:27:02