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

前端之家收集整理的这篇文章主要介绍了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是正常的,因为您只是回显范围

猜你在找的Bash相关文章