Linux shell脚本编程基础之练习篇

简介:   shell脚本编程基础之练习篇。 1、编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息。 #!/bin/bash if [ $# -ne 1 ] then echo "请输入一个参数" exit el...

  shell脚本编程基础之练习篇。

  • 1、编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息。

#!/bin/bash
if [ $# -ne 1 ]
then
        echo "请输入一个参数"
        exit
else
        echo "参数正确"
        newfile=$1
fi

#echo `grep "^#\!" ${newfile}`

if ! grep "^#\!" ${newfile} &>/dev/null
then
cat >>${newfile}<<EOF
#!/bin/bash
# Author: Inert Your Name here.
#Date & Time: `date +"%F %T"`
#Description: Please Edit here.
EOF
fi
vi +5 ${newfile}

 将脚本改个名字例如:newshfile,将其放置在/bin/目录下,那么你的系统就多了一个新的newshfile命令了

  • 2、求100以内偶数的和

#!/bin/bash
# Author: Inert Your Name here.
#Date & Time: 2015-06-02 20:37:07
#Description: Please Edit here.
let sum=0
for index in {1..100}
do
if [ $[ ${index}%2 ] == 0 ]; then
        #let sum+=${index}
        sum=`expr ${sum} + ${index}`
fi
done
echo "sum=${sum}"

let sum=0
for num in $(seq 1 100); do
if [ $[ $num % 2 ] == 0 ]; then
        sum=`expr $sum + $num`
fi
done
echo "sum=$sum"
  • 判断输入的参数个数,如果为两个参数则相加并输出相加后的值
#!/bin/bash
if [ $# -eq 2 ]
then
        echo "参数个数 $#\n"
        echo "参数相加 $1 + $2 = `expr $1 + $2`"
else
        echo "参数个为 $#,本脚本需要两个参数" 
fi
  • 用while\for循环降序输出1~5的值
#!/bin/sh
num=5
while test $num != 0
do
        echo "$num"
        num=`expr $num - 1`
done

echo "*****************************"
num=5
while (($num != 0))
do
        echo "$num"
        num=`expr $num - 1`
done


echo "*****************************"
for num in {5..1}
do
        echo "$num"
done

echo "*****************************"
for ((num=5;$num>0;num=`expr $num - 1`))
do
        echo "$num"
done
  •  加减乘除运算
#!/bin/bash
# Author: Inert Your Name here.
#Date & Time: 2015-06-02 21:32:51
#Description: Please Edit here.
if test $# == 3
then
        echo "参数个数$#,参数:$@"
case $1 in
        +)
        num=`expr $2 + $3`
        ;;
        -)
        num=`expr $2 - $3`
        ;;
        x)
        num=`expr $2 \* $3`
        ;;
        /)
        num=`expr $2 \/ $3`
        ;;
        *)
        echo "只允许+ - x /这几个运算符"
        ;;
esac
echo "num=$num"
else
        echo "参数个数为3个,分别为\"运算符 参数1 参数2\""
fi
  • 浮点数的运算

echo 5.12 + 2.5 | bc

#!/bin/bash
# Author: Inert Your Name here.
#Date & Time: 2015-06-02 22:07:28
#Description: Please Edit here.

a=5.66
b=8.67
c=`echo $a + $b | bc`
echo "$a + $b = $c"
  • 打印以下各种图形效果
1
22
333
4444
55555
****************************
1
12
123
1234
12345
****************************
|_
||_
|||_
||||_
|||||_
****************************
 *
 * *
 * * *
 * * * *
 * * * * *
 * * * * *
 * * * *
 * * *
 * *
 *
************lengxing****************
      *
     * *
    * * *
   * * * *
  * * * * *
 * * * * * *
  * * * * *
   * * * *
    * * *
     * *
      *
#!/bin/bash
# Author: Inert Your Name here.
#Date & Time: 2015-06-02 22:24:41
#Description: Please Edit here.

for ((num=1;$num<=5;num=`expr $num + 1`))
do
        for((index=$num;$index>0;index=`expr $index - 1`))
        do
                echo -n "$num"
        done 
echo ""
done 

echo "****************************"
for ((num=1;$num<=5;num=`expr $num + 1`))
do
        for((index=1;$index<=$num;index=`expr $index + 1`))
        do
                echo -n "$index"
        done
echo ""
done

echo "****************************"
for ((num=1;$num<=5;num=`expr $num + 1`))
do
        for((index=1;$index<=$num;index=`expr $index + 1`))
        do
                if [ $index%2 == 0 ]; then
                        echo -n " "
                else
                        echo -n "|"
                fi
        done
echo -n "_"
echo ""
done

echo "****************************"
for (( i=1; i<=5; i++ ))
do
    for (( j=1; j<=i;  j++ ))
    do
     echo -n " *"
    done
    echo ""
done

for (( i=5; i>=1; i-- ))
do
    for (( j=1; j<=i;  j++ ))
    do
     echo -n " *"
    done
    echo ""
done

echo "************lengxing****************"
max=6
for ((i=1; i<=$max; i++))
do
        for ((j=$max-i; j>0; j--))
        do
                echo -n " "
        done
        for ((k=1; k<=i; k++))
        do
                echo -n " *"
        done
        echo ""
done

for ((i=1; i<=$max; i++))
do
        for ((k=1; k<=i; k++))
        do
                echo -n " "
        done
        for ((j=$max-i; j>0; j--))
        do
                echo -n " *"
        done
        echo ""
done

 

相关文章
|
15天前
|
Web App开发 Java Linux
Linux之Shell基本命令篇
Linux之Shell基本命令篇
Linux之Shell基本命令篇
|
22天前
|
弹性计算 Shell Perl
ecs服务器shell常用脚本练习(二)
【4月更文挑战第1天】shell代码训练(二)
106 1
|
28天前
|
算法 Linux C++
【Linux系统编程】解析获取和设置文件信息与权限的Linux系统调用
【Linux系统编程】解析获取和设置文件信息与权限的Linux系统调用
29 0
|
28天前
|
存储 算法 Linux
【Linux系统编程】深入理解Linux目录扫描函数:scandir目录函数(按条件扫描目录
【Linux系统编程】深入理解Linux目录扫描函数:scandir目录函数(按条件扫描目录
37 0
|
28天前
|
存储 算法 Linux
【Linux系统编程】Linux 文件系统探究:深入理解 struct dirent、DIR 和 struct stat结构
【Linux系统编程】Linux 文件系统探究:深入理解 struct dirent、DIR 和 struct stat结构
41 0
|
7天前
|
监控 Shell 开发工具
Shell编程
Shell编程
|
8天前
|
JSON 运维 监控
训练shell常用脚本练习(三)
【4月更文挑战第14天】shell代码训练(三)
26 1
|
11天前
|
存储 弹性计算 Shell
ecs服务器shell常用脚本练习(十)
【4月更文挑战第11天】shell代码训练(十)
143 0
|
11天前
|
弹性计算 Shell Go
ecs服务器shell常用脚本练习(九)
【4月更文挑战第10天】shell代码训练(八)
136 0
|
14天前
|
存储 Shell Linux
【攻防世界】unseping (反序列化与Linux bash shell)
【攻防世界】unseping (反序列化与Linux bash shell)