我在做一些作业时遇到了问题,因此,基本上,我们被要求创建一个bash脚本,该脚本需要一个大于2的变量,并返回相同数量的斐波那契序列号,即。如果我给5,它将打印: 0 1 1 2 3 我已经进行了一些研究,并提出了一个独特的想法,我实际上并没有在网上看到任何东西,(请记住,我在python方面有一些经验),但是我遇到了一个问题,所以基本上我在bash和2中使用了一个表达式变量以计算序列,我首先手动将它们设置为0和1(序列中的第一个和第二个数字),然后在更改它们的值时将它们加在一起,
这是代码:
#!/bin/bash
a=0
b=1
for i in $(seq 1 $1);
do
if ["$a" -gt "$b"]
then
b=($a +$b)
echo "$b"
else
a=($a +$b)
echo $a
fi
done
我有很多问题,希望完全脱离上下文,但我希望您能有一个一般的想法,并可以帮助指导我解决问题:/ 似乎我希望将某些内容视为数字,但将其视为文本...不确定,但是任何帮助都将受到高度赞赏
答案 0 :(得分:0)
您非常亲密,一些小的语法更改和新的初始值使其起作用。
注意:
使用比较只用两个变量进行计算的好主意:)
#!/bin/bash -
a=1
b=0
echo $a
for i in $(seq 1 $1);
do
if [ $a -gt $b ] ; then
let b=($a +$b)
echo $b
else
let a=($a +$b)
echo $a
fi
done
答案 1 :(得分:0)
bash中有一个算术上下文。
可以稍微重写
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script>
function myFunction(){
var fn = document.getElementById("f1").value;
var des = document.getElementById("t1").value;
var fDiv = document.getElementById("d2"); //fDiv stands for "Form Div"
var hDiv = document.getElementById("d1"); // hDiv stands for "Hidden Div"
hDiv.style.display = "block";
document.getElementById("fn1").innerHTML = fn;
document.getElementById("t2").innerHTML = des;
fDiv.style.display = "none";
}
</script>
</head>
<body>
<div name="form" id="d2" class="d2">
<form>
First Name: <input type="text" name="fn" id="f1" /><br /><br />
Description: <textarea id="t1" rows="5" cols="20"></textarea><br /><br />
<input type="button" name="b1" id="b1" value="Add" onclick="myFunction()" />
<input type="button" name="b1" id="b2" value="Cancel" onclick="Cancel()" />
</form>
</div>
<div name="hidden" id="d1" class="d1">
<p><span id="fn1"></span></p>
<p><span id="t2"></span></p>
</div>
</body>
</html>
答案 2 :(得分:0)
您需要一个空格
$ a=0; b=1;
for i in {1..9};
do c=$((a+b));
echo $c;
if ((a>b)); then b=$c; else a=$c; fi;
done
1
2
3
5
8
13
21
34
55
您可以使用
进行算术评估if [ "$a" -gt "$b" ]
一旦脚本运行,请验证结果是否符合您的期望(即打印0吗?)
答案 3 :(得分:0)
#!/bin/bash
a=0
b=1
echo $a
c=$1
for i in $(seq 1 $((c-1)));
do
if [ $a -gt $b ]; then
b=$((a+b))
echo $b
else
a=$((a+b))
echo $a
fi
done
答案 4 :(得分:0)
使用双括号来评估算术表达式。代替:
if [ "$a" -gt "$b" ]
写:
if ((a > b))
,而不是:
($a + $b)
写:
$((a + b))
您还可以这样编写for
标头:
for ((i = 0; i < $1; i++))
但是在这种情况下这不是必需的。然后您的循环变为:
for ((i = 0; i < $1; i++)); do
if ((a > b)); then
b=$((a + b))
echo "$b"
else
a=$((a + b))
echo "$a"
fi
done