Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash C循环形式比传统形式的好处`_Bash - Fatal编程技术网

Bash C循环形式比传统形式的好处`

Bash C循环形式比传统形式的好处`,bash,Bash,我接下来的教程介绍了传统Shell形式的和的以及:C from的 $ for num in {1..3}; do echo "test"; done test test test 此外,bash的最新版本还添加了for命令语法的第二种形式,类似于C编程语言中的形式 $ for (( num=0; num<3; num=num+1 ));do echo "test"; done test test test 我没有学C, 与

我接下来的教程介绍了传统Shell形式的
以及:C from的

    $ for num in {1..3}; do echo "test"; done
    test
    test
    test
此外,bash的最新版本还添加了for命令语法的第二种形式,类似于C编程语言中的形式

    $ for (( num=0; num<3; num=num+1 ));do echo "test"; done
    test
    test
    test
我没有学C,

与bash脚本中的
传统表单
相比,
C表单
有什么好处?

C表单的一个优点是:可以有效地在范围定义中使用变量。在传统形式中,您无法有效地执行此操作。(我将“高效”定义为“不需要子外壳”。)考虑:

begin=13
end=17
for (( num=$begin; $num < $end; num=$num+1 )); do
    echo $num
done

# invalid syntax, sadly
for num in {$begin..$end}; do echo $num; done

# instead have to use a sub-shell, not as efficient
for num in $(seq $begin $end); do
    echo $num
done
begin=13
结束=17
对于((num=$begin;$num<$end;num=$num+1));做
echo$num
完成
#遗憾的是,语法无效
对于{$begin..$end}中的num;执行echo$num;完成
#取而代之的是使用一个子外壳,效率不高
对于$中的num(seq$begin$end);做
echo$num
完成
如果您对“最近的”的定义接近20年前,那么是的,C风格的for循环是最近的。(它来自ksh88(与1988年一样))
begin=13
end=17
for (( num=$begin; $num < $end; num=$num+1 )); do
    echo $num
done

# invalid syntax, sadly
for num in {$begin..$end}; do echo $num; done

# instead have to use a sub-shell, not as efficient
for num in $(seq $begin $end); do
    echo $num
done