bash – 使用{$var}在for循环中进行变量替换

我是新手来编写脚本,我正在尝试通过制作这个简单要求一系列数字的小脚本来练习.我会输入前. 5..20它应该打印范围,但是它只是回显我输入的内容(在这个例子中为“5..20”)并且不扩展变量.有人能告诉我我做错了什么吗?

脚本:

echo -n "Enter range of number to display using 0..10 format: "
    read range

    function func_printrage
    {
         for n in {$range}; do
         echo $n
         done
    }

func_printrange
> bash中的brace扩展不会扩展参数(与zsh不同)
>你可以通过使用eval和命令替换来解决这个问题$()
> eval是邪恶的,因为你需要消毒你的输入,否则人们可以输入rm -rf /等范围;并且eval会运行它
>不要使用function关键字,它不是POSIX而已被弃用
>使用read的-p标志而不是echo

但是,出于学习目的,您可以这样做:

read -p "Enter range of number to display using 0..10 format: " range

func_printrange()
{
  for n in $(eval echo {$range}); do
    echo $n
  done
}

func_printrange

注意:在这种情况下,使用eval是正常的,因为您只是回显范围

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...