フィボナッチ数列から始めましょう。
フィボナッチ級数は黄金分割級数としても知られ、次のような級数を指します:0, 1, 1, 2, 3, 5, 8, 13, 21 ......各項は最初の2項の和であり、級数の最初の2項を0と1と定義します。
スクリプト1:Fibonacci.sh
#!/bin/bash
echo "How many numbers do you want of Fibonacci series ?"
read total
x=0
y=1
i=2
echo "Fibonacci Series up to $total terms :: "
echo "$x"
echo "$y"
while [ $i -lt $total ]
do
i=`expr $i + 1 `
z=`expr $x + $y `
echo "$z"
x=$y
y=$z
done
サンプル出力(コンピューティング)
[root@tecmint ~]# chmod 755 Fibonacci.sh
[root@tecmint ~]# ./Fibonacci.sh
How many numbers do you want of Fibonacci series ?
10
Fibonacci Series up to 10 terms ::
0
1
1
2
3
5
8
13
21
34Fibonacci.shダウンロード
#p#
ご存知のように、コンピュータは2進法、つまり0と1しか理解できないので、ほとんどの人は10進法と2進法の変換を学びたがります。この複雑な計算のために簡単なスクリプトを書くのはどうでしょうか?
スクリプト2:DecimalToBinary.sh
#!/bin/bash
for ((i=32;i>=0;i--)); do
r=$(( 2**$i))
Probablity+=( $r )
done
[[ $# -eq 0 ]] &echo -en "Decimal\t\tBinary
"
for input_int in $@; do
s=0
test ${#input_int} -gt 11 &printf "%-10s\t" "$input_int"
for n in ${Probablity[@]}; do
if [[ $input_int -lt ${n} ]]; then
[[ $s = 1 ]] && printf "%d" 0
else
printf "%d" 1 ; s=1
input_int=$(( $input_int - ${n} ))
fi
done
echo -e
doneサンプル出力(コンピューティング)
[root@tecmint ~]# chmod 755 Decimal2Binary.sh
[root@tecmint ~]# ./Decimal2Binary.sh 1121
Decimal Binary
1121 注:上記のスクリプトは実行時に入力を受け付けます。
DecimalToBinary.shダウンロード
実際、組み込みの "bc "コマンドは、簡単なコード行で10進数を2進数に変換します。以下のスクリプトを実行してください:
[root@tecmint ~]# echo "obase=2; NUM" | bcNUMは変換したい10進数です。
[root@tecmint ~]# echo "obase=2; 121" | bc
#p#
次に、上のスクリプトの逆、つまり2進数を10進数に変換するスクリプトを紹介します。
スクリプト 3: BinaryToDecimal.sh
#!/bin/bash
echo "Enter a number :"
read Binary
if [ $Binary -eq 0 ]
then
echo "Enter a valid number "
else
while [ $Binary -ne 0 ]
do
Bnumber=$Binary
Decimal=0
power=1
while [ $Binary -ne 0 ]
do
rem=$(expr $Binary % 10 )
Decimal=$((Decimal+(rem*power)))
power=$((power*2))
Binary=$(expr $Binary / 10)
done
echo " $Decimal"
done
fiサンプル出力(コンピューティング)
[root@tecmint ~]# chmod 755 Binary2Decimal.sh
[root@tecmint ~]# ./Binary2Decimal.sh
Enter a number :
11
3注:上記の機能は、ターミナルで "bc "コマンドを使って以下のように実行することもできます。
[root@tecmint ~]# echo "ibase=2; BINARY" | bcBINARYは変換したい2進数です。
[root@tecmint ~]# echo "ibase=2; 11010101" | bc
312BinaryToDecimal.shダウンロード
#p#
同様に、8進数や16進数から10進数への変換や、その逆の変換も自分で書くことができます。bc」コマンドでこれらの変換を行うコードは以下の通りです。
10進数から8進数
[root@tecmint ~]# echo "obase=8; Decimal" | bc10進数から16進数
[root@tecmint ~]# echo "obase=16; Decimal" | bc8進数から10進数
[root@tecmint ~]# echo "ibase=8; Octal" | bc16進数から10進数
[root@tecmint ~]# echo "ibase=16; Hexadecimal" | bc2進数から8進数
[root@tecmint ~]# echo "ibase=2;obase=8 Binary" | bc#p#
シェル・スクリプト言語で一般的な値を以下に示します。
Test : INTEGER1 -eq INTEGER2
Meaning: INTEGER1 is equal to INTEGER2Test : INTEGER1 -ge INTEGER2
Meaning: INTEGER1 is greater than or equal to INTEGER2Test: INTEGER1 -gt INTEGER2
Meaning: INTEGER1 is greater than INTEGER2Test:INTEGER1 -le INTEGER2
Meaning: INTEGER1 is less than or equal to INTEGER2Test: INTEGER1 -lt INTEGER2
Meaning: INTEGER1 is less than INTEGER2Test: INTEGER1 -ne INTEGER2
Meaning: INTEGER1 is not equal to INTEGER2





