Linux 如何在bash脚本中生成1和0序列
我试图使用bash脚本生成一系列的1和0Linux 如何在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
#!/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大概想要使用的,$(…)
而不是$(…)
).这些引语没有伤害任何东西。很高兴知道它成功了,很高兴知道它成功了,