1.菱形打印
用for循环
bash
#!/bin/bash
read -p "请输入菱形的大小:" num
#打印向上的等腰三角形
for ((i=1;i<=num;i++))
do
for ((j=num-1;j>=i;j--))
do
echo -n " "
#打印的是前面的空格
done
for ((k=1;k<=2*i-1;k++))
do
echo -n "*"
#打印的是*
done
echo
done
#打印向下的等腰三角形
for ((i=num-1;i>0;i--))
do
for((j=1;j<num-i+1;j++))
do
echo -n " "
done
for((k=2*i-1;k>0;k--))
do
echo -n "*"
done
echo
done
用函数来表示
bash
#!/bin/bash
read -p "请输入一个数字来控制函数的大小(数字越大菱形越大):" num
#打印菱形上半部分
shang () {
i=1
NUM=$1
while [ $i -le $NUM ]
do
a=$NUM
while [ $a -ge $i ]
do
echo -n " "
let a--
done
b=1
while [ $b -le $i ]
do
echo -n "*"
let b++
done
c=2
while [ $c -le $i ]
do
echo -n "*"
let c++
done
echo " "
let i++
done
}
#打印菱形下半部分
xia (){
let d=$1-1
while [ $d -ge 1 ]
do
e=$1
while [ $e -ge $d ]
do
echo -n " "
let e--
done
f=$[(2*d)-1]
g=1
while [ $g -le $f ]
do
echo -n "*"
let g++
done
let d--
echo " "
done
}
shang $num
xia $num
2.十进制ip转二进制
bash
#!/bin/bash
bin () {
SUM=''
NUM=$1
for i in {1..8}
do
SUM=$[NUM%2]$SUM
let NUM/=2
done
echo $SUM
}
#定义一个分割IP的函数
SPT () {
IP=$1
for i in {1..4}
do
num=${IP%%.*}
#取首字段的ip
IP=${IP#*.}
#除了首字段其余保留,并重新复制
#使用bin函数进行转化
BIN=$(bin $num)
echo -n $BIN.
#不换行输出并在后面加上点,形成ip地址的格式
done
}
read -p "请输入一个十进制的IP地址:" SIP
RES=$(SPT $SIP)
#调用SPI函数,对标准输入的SIP进行转换
echo "输出的二进制IP为:" ${RES%.*}
#去除IP末尾的那个点