Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.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 如何在bash脚本中生成1和0序列_Linux_Bash_Shell - Fatal编程技术网

Linux 如何在bash脚本中生成1和0序列

Linux 如何在bash脚本中生成1和0序列,linux,bash,shell,Linux,Bash,Shell,我试图使用bash脚本生成一系列的1和0 #!/bin/bash clock=1 n=1 # continue until $n equals 5 while [ $n -le 5 ] do echo "$clock" n=$(( n+1 )) # increments $n clock=$(~clock) done 预期产出: 1. 0 1. 0 一, 由上述代码生成的输出: 我从此行中得到错误:clock=$(~clock) 错误:~clock:comman

我试图使用bash脚本生成一系列的1和0

#!/bin/bash
clock=1
n=1
# continue until $n equals 5
while [ $n -le 5 ]
do
    echo "$clock"
    n=$(( n+1 ))     # increments $n
    clock=$(~clock)
done
预期产出: 1. 0 1. 0 一,

由上述代码生成的输出: 我从此行中得到错误:clock=$(~clock)
错误:~clock:command not found

如果要生成1和0的序列,可以使用

#!/bin/bash
clock=1
n=1
# continue until $n equals 5
while [ $n -le 5 ]
do
    echo "$clock"
    n=$(( n+1 ))     
    # increments $n
    clock=$((clock+1))
    clock=$((clock%2))
done
#!/bin/bash
n=1
# continue until $n equals 5
while [ $n -le 5 ]
do
    echo "$((RANDOM%2))"
    n=$(( n+1 ))
done
如果要生成1和0的随机序列,可以使用

#!/bin/bash
clock=1
n=1
# continue until $n equals 5
while [ $n -le 5 ]
do
    echo "$clock"
    n=$(( n+1 ))     
    # increments $n
    clock=$((clock+1))
    clock=$((clock%2))
done
#!/bin/bash
n=1
# continue until $n equals 5
while [ $n -le 5 ]
do
    echo "$((RANDOM%2))"
    n=$(( n+1 ))
done

如果要交替使用1和0生成序列,可以使用

#!/bin/bash
clock=1
n=1
# continue until $n equals 5
while [ $n -le 5 ]
do
    echo "$clock"
    n=$(( n+1 ))     
    # increments $n
    clock=$((clock+1))
    clock=$((clock%2))
done
#!/bin/bash
n=1
# continue until $n equals 5
while [ $n -le 5 ]
do
    echo "$((RANDOM%2))"
    n=$(( n+1 ))
done
如果要生成1和0的随机序列,可以使用

#!/bin/bash
clock=1
n=1
# continue until $n equals 5
while [ $n -le 5 ]
do
    echo "$clock"
    n=$(( n+1 ))     
    # increments $n
    clock=$((clock+1))
    clock=$((clock%2))
done
#!/bin/bash
n=1
# continue until $n equals 5
while [ $n -le 5 ]
do
    echo "$((RANDOM%2))"
    n=$(( n+1 ))
done

这方面的问题是:

clock=$(~clock)
在这里,bash试图将
$(…)
中的任何内容作为命令运行(称为命令替换)

使用
~时钟
也是不正确的,因为它只会执行位求反,不会像您期望的那样产生
1
0

您可以使用此脚本打印备用
1
0

#!/bin/bash
clock=1
# continue until $n equals 5
for ((n=0; n<5; n++))
do
    echo "$clock"
    clock=$((1 - clock))
done
#/bin/bash
时钟=1
#继续,直到$n等于5

对于((n=0;n问题在这一行:

clock=$(~clock)
在这里,bash试图将
$(…)
中的任何内容作为命令运行(称为命令替换)

使用
~时钟
也是不正确的,因为它只会执行位求反,不会像您期望的那样产生
1
0

您可以使用此脚本打印备用
1
0

#!/bin/bash
clock=1
# continue until $n equals 5
for ((n=0; n<5; n++))
do
    echo "$clock"
    clock=$((1 - clock))
done
!/bin/bash
时钟=1
#继续,直到$n等于5

对于((n=0;n另一种短方法

#!/bin/bash
for i in {1..5}
do
  echo $((i%2))
done
或者不太简洁,但更易于配置变量来定义循环:

#!/bin/bash
for ((i=1;i<=5;i++))
do
  echo $((i%2))
done

另一条捷径

#!/bin/bash
for i in {1..5}
do
  echo $((i%2))
done
或者不太简洁,但更易于配置变量来定义循环:

#!/bin/bash
for ((i=1;i<=5;i++))
do
  echo $((i%2))
done

使用大括号展开可以使用以下技巧

echo {,,,,}{1,0}

这个将生成5对1和0。

您可以使用大括号展开使用以下技巧

echo {,,,,}{1,0}

这一个将生成5对1和0。

什么是
~clock
应该是什么意思?你也可以从
$clock
@Saksow
~
中删除引号。这是算术表达式中使用的按位NOT运算符(这是OP大概想要使用的,
$(…)
而不是
$(…)
)。引号没有伤害任何东西。
~clock
应该是什么意思?您也可以从
$clock
@saksoow
~
中删除引号。
是算术表达式中使用的按位NOT运算符(这是OP大概想要使用的,
$(…)
而不是
$(…)
).这些引语没有伤害任何东西。很高兴知道它成功了,很高兴知道它成功了,