我正在尝试使用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 1
从上面的代码生成的输出: 我从这一行得到错误:clock = $(~clock) 错误:~clock:找不到命令
答案 0 :(得分:2)
如果要生成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
如果要生成1和0的随机序列,可以使用
#!/bin/bash
n=1
# continue until $n equals 5
while [ $n -le 5 ]
do
echo "$((RANDOM%2))"
n=$(( n+1 ))
done
答案 1 :(得分:2)
问题出在这一行:
clock=$(~clock)
这里bash试图在$(...)
内运行任何命令作为命令(它被称为命令替换)。
使用~clock
也不正确,因为它只会执行按位否定,并且不会像您期望的那样产生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
答案 2 :(得分:2)
另一个简短的方法
<div class="container">
<div class="hero-unit fp-block">
<div id="ut-wrap">
<div class="inner">
<div class="holder">
<iframe src="https://www.youtube.com/embed/_VRXrp_AfMM" frameborder="0" allowfullscreen></iframe>
<img src="http://placehold.it/150x150">
</div>
</div>
</div>
</div>
</div>
或稍微简洁但更容易配置变量来定义循环:
#!/bin/bash
for i in {1..5}
do
echo $((i%2))
done
另一个,只是为了好玩(不会在阅读脚本中这样做,更像是一个小小的谜题,以找出它的工作原理)。删除&#34; false&#34;从0开始的行。
#!/bin/bash
for ((i=1;i<=5;i++))
do
echo $((i%2))
done
答案 3 :(得分:0)
您可以通过大括号扩展来利用以下技巧。
echo {,,,,}{1,0}
这将产生5对1和0。