Shell编程基础

以前文章链接
SHELL编程练习
文件的属性和权限
基本文件操作练习
高级文件操作练习
文件和目录管理

创建一个名字为shellfile1.sh的脚本文件

  1. 显示信息:This is my first shell sheipt

  2. 空一行

  3. 显示当前的日期和时间

  4. 显示当前的工作目录

  5. 显示当前系统的用户数目

#!/bin/bash
echo "This is my first shell file"
echo 
date
pwd
cat /etc/passwd | wc -l

显示结果如下:

[tom@iZbp12r8eimkkdor4011j3Z ~]$ shellfile1.sh 
This is my first shell file

Thu Dec 30 08:39:59 CST 2021
/home/tom
38

运行方式:

首先将文件设置为execute =>chmod u+x shellfile1.sh

  1. 直接使用bash(sh)运行可执行文件 sh shellfile1.sh

  2. 将shellfile1.sh变成可执行文件,将当前目录加入到用户的PATH变量中,通过文件名直接运行脚本程序

Chmod u+x shellfile.sh
PATH=$PATH:/home/tom       #我当前目录是/home/tom
Shellfile.sh

创建一个名字为shellfile2的脚本文件,

使用set和cal命令给位置变量赋值,然后分别输出$0,$1… 9 这 10 个 位 置 变 量 以 及 9这10个位置变量以及 910#,$*。

touch shellfile2.sh
set `date`        #将set中的数据作为变量传递给脚本文件,以空格为分隔
echo $0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $# $*
#$0 代表的是bash

显示结果

#首先看一下date是啥
[tom@iZbp12r8eimkkdor4011j3Z ~]$ date
Thu Dec 30 08:53:38 CST 2021

#开始显示
[tom@iZbp12r8eimkkdor4011j3Z ~]$ echo $0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $# $*
-bash Thu Dec 30 08:53:13 CST 2021 6 Thu Dec 30 08:53:13 CST 2021


#$0 代表的是bash
#可以看到date一共有6个分隔,因此$1- $6占据了这6个变量
#$7-$9都是空的,显示为空
#$#代表有几个变量给到   => 6个
#$*将前面所有赋值的变量全部打印
我想我解释的够清楚了吧,哈哈

创建一个名为shellfile3的shell脚本文件,在执行脚本文件时,给定两个文件作为命令行参数,将这两个文件复制到/var/tmp目录下。(可以尝试多次运行脚本,每次给命令行参数赋不同的值,然后查看/var/tmp以验证执行结果。)

#!/bin/bash
cp $1 $2 /var/tmp

展示结果

#首先在/home/tom 下面创建两个文件hell1.txt hell2.txt
touch hell1.txt hell2.txt
[tom@iZbp12r8eimkkdor4011j3Z ~]$ sh shellfile3 hell1.txt hell2.txt
[tom@iZbp12r8eimkkdor4011j3Z ~]$ cd /var/tmp
[tom@iZbp12r8eimkkdor4011j3Z tmp]$ ls 
aliyun-service.pid
cloud-init
hell1.txt
hell2.txt

创建一个名为shellfile4的shell脚本文件,用read命令读取键盘输入,将值存入变量abc中,如果读入的值为y的话,输出Yes,否则输出No。

read abc
if [ $abc  = y ]
then 
echo “Yes”
else
echo “No”
fi
echo "Please enter the number to check if is equal to y"

read abc

if [ "$abc" == y ]

then echo yes 
else echo no
fi


编写脚本文件smallest,计算从键盘读入的三个整数的最小值

#!/bin/bash
echo "Please input three numbers :"
read n1 n2 n3
if test $n1 -le $n2 -a $n1 -le $n3
then
        echo "The smallest number is :" $n1
elif test $n2 -le $n1 -a $n2 -le $n3
then
        echo "The smallest number is :" $n2
else
        echo "The smallest number is :" $n3
fi

方法二:


#!/bin/bash
read n1 n2 n3
if test $n1 -le $n2
then min=$n1
else min=$n2
fi
if test $min -le $n3
then  echo “The smallest number is :$min.”
else  echo “The smallest number is :$n3.”
fi


编写脚本文件SUM,对命令行传给它三个数字参数求和并显示结果。

用for循环,求和时候用let命令和expr两种方式

程序显示示例:10+20+30=60

#!/bin/bash
echo "Please input three numbers"
sum=0
for count in $1 $2 $3
do
sum=`expr $sum+$count`
#let sum=$sum+$count 
#let sum=sum+count
done
echo $1+$2+$3=$sum

编写脚本文件Counter,递减显示数字20到10,使用while和until两种方式

count=20
while  [ $count -gt 9 ]    # while  [ $count -ge 10 ]
# while test $count -gt 9
do
echo $count
count=`expr  $count  -  1`      # let count=count-1
done

使用until循环

count=20
until [ $count -le 9 ]
#until test $count -le 9
do
echo $count
count=`expr $count - 1`
#let count=count-1
done
Logo

更多推荐