Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.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

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
Linux Shell脚本未运行_Linux_Bash_Shell - Fatal编程技术网

Linux Shell脚本未运行

Linux Shell脚本未运行,linux,bash,shell,Linux,Bash,Shell,当我执行下面的脚本时,它只是停留在那里,没有输出。你知道怎么了吗 #!/bin/bash for k in `seq 0 4` do for c1 in `seq 1 30` do for c2 in `seq $c1 30` do for b1 in `seq 1 $c1` do for b2 in `seq $b1 $c2` do for s1 in `seq 0 (($c1 - $b1))` do for s2 in `seq 0 (($c2 - $b2))` do echo "k

当我执行下面的脚本时,它只是停留在那里,没有输出。你知道怎么了吗

#!/bin/bash
for k in `seq 0 4`
do
for c1 in `seq 1 30`
do
for c2 in `seq $c1 30`
do
for b1 in `seq 1 $c1`
do
for b2 in `seq $b1 $c2`
do
for s1 in `seq 0 (($c1 - $b1))`
do
for s2 in `seq 0 (($c2 - $b2))`
do
    echo "k: $k - c1: $c1 - c2: $c2 - b1: $b1 - b2: $b2 - s1: $s1 - s2: $s2"
done
done
done
done
done    
done
done

其中一个
seq
语句正在无限期运行。您缺少一些美元符号:

for s1 in `seq 0 $(($c1 - $b1))`

for s2 in `seq 0 $(($c2 - $b2))`

根本不要在这里使用
seq
;这是毫无意义的

for ((k=0; k<4; k++)); do
  for ((c1=1; c1<30; c1++)); do
    for ((c2=c1; c2<30; c2++)); do
      for ((b1=1; b1<c1; b1++)); do
        for ((b2=b1; b2<c2; b2++)); do
          for ((s1=0; s1<(c1-b1); s1++)); do
            for ((s2=0; s2<(c2-b2); s2++)); do
              echo "k: $k - c1: $c1 - c2: $c2 - b1: $b1 - b2: $b2 - s1: $s1 - s2: $s2"
            done
          done
        done
      done
    done    
  done
done

((k=0;k@codepk因为没有
$
这是一个语法错误。您是否正在抑制错误?@codepk$(…)将执行算术计算并返回实际值;(…)没有$将只计算代码并设置错误值(阅读手册)我是新手。我以为$是用来获取变量值的。让$作为结果对我来说没有意义。现在没关系。
(…)
只作为语句使用,而不是作为另一个comand的参数。
(())的内部
,实际上最好使用
c1
b1
裸,而不使用任何
$
。也可以对其中一些表达式使用bash序列表达式:
表示{0..4}中的k
@Nirk…对于两个值都是常量的情况,是的。但问题是,这种方便的语法是否是对一致性的合理权衡。我使用的是sh而不是bash。在bash中工作。