Shell的基础知识与使用方法 -----Day5
一.课前温习与回顾
1.在Linux操作系统中,查看系统磁盘空间的使用情况是用什么命令,该命令的什么参数是以可读性较高的方式来显示信息?
df:查看系统磁盘空间的使用情况
df-h:可读性较高的方式来显示信息
2. Linux系统中的用户名必须是唯一的,这句话对不对?
这句话是正确的,因为用户不能够重复。
二.Shell的基础知识与使用方法
1.Shell的基础知识
什么是Shell?
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Shell其实就是一个命令解释器
在Shell中编写时应该注意什么?
第一行应该为:
#!/bin/bash
编写好脚本之后,修改其权限为可写
chmod +x ./<脚本名>
执行脚本文件
./<脚本名>【注意,一定要写成 ./test.sh,而不是 test.sh】
2.Shell的用法[详细的请查看菜鸟教程Shell 教程]
(1)基本用法
- 定义变量时,‘=’与变量之间不能有空格
a=yang
- 用一个定义过的变量,只要在变量名前面加美元符号
b=$a【则b=yang】
- 单引号与双引号
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
双引号里可以有变量,可以出现转义字符
- 注释
以 # 开头的行就是注释,会被解释器忽略。
- 几个特殊字符用来处理参数
$#:传递到脚本的参数个数
$?:显示最后命令的退出状态
(2)基本运算符
- 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2
- expr 是一款表达式计算工具,使用它能完成表达式的求值操作
- 乘号(*)前边必须加反斜杠()才能实现乘法运算
- 关系运算符
-eq:判断是否相等;-gt:大于;-lt:小于
- 布尔运算符
! :非运算
-a:与运算
-o:或运算
&&与||:必须[]
- 文件测试运算符
-r file:检测文件是否可读
-e file:检测文件(包括目录)是否存在
(3)流程控制
- if 语句语法格式: 注意中括号前后需要有空格
if [ 条件 ]
then
指令
fi
- if else 语法格式:
if [ 条件 ]
then
指令1
else
指令2
fi
- for循环一般格式为:
for <变量名> in item1 item2 ... itemN
do
指令1
done
- while循环一般格式为:
while ((条件))
do
指令1
done
- 无限循环
while :
do
指令
done
或者
while true
do
指令
done
(4)函数
- 函数的定义格式如下:
[ function ] funname [()]
{
action;
[return int;]
}
- 注意:所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用。调用函数仅使用其函数名即可 。
三.编程练习
1.编写Shell脚本,判断用户家目录下(~)下有没有一个叫test_shell的文件夹,如果没有,提示按 Y创建并进入此文件夹,按N退出。如果有,直接进入,提示请输入一个字符串,并按此字符串创建一个文件,如果此文件已存在,提示重新输入,重复五次自动退出,不存在创建完毕退出。
- 程序代码
#!/bin/bash
cd /home/yangjun/
if [ $# -ne 1 ]
then
echo "Input error"
exit
fi
if [ -e $1 ]
then
cd $1
echo "Please input a string:"
time=1
while(($time<=5))
do
read str1
if [ -f $str1 ]
then
echo "Please input again:"
let time++
else
touch $str1
exit
fi
done
exit
else
echo "DO you want to creat it?(y/n)"
read str2
if [ $str2=='Y' -o $str2=='y' ]
then
mkdir $1
else
exit
fi
fi
- 运行结果
2.猜数字游戏
#!/bin/bash
B=$RANDOM
#echo `expr $B % 101`
A=`expr $B % 101`
echo "Gane Start! You have 5 chances!"
for i in 1 2 3 4 5 6
do
if [ $i -lt 6 ]
then
echo "Please input number[0-100]"
echo "You have `expr 6 - $i ` chance!"
read num
if [ $num -gt $A ]
then
echo "higher!"
else
if [ $num -lt $A ]
then
echo "Lower!"
else
if [ $num -eq $A ]
then
echo "You win!"
exit
fi
fi
fi
else
if [ $i -gt 5 ]
then
echo "You have no chance! Game Over!"
echo "The number is $A"
fi
fi
done
- 运行结果
四.课后总结
今天主要学习了Shell编程,熟悉了shell解释器和在Shell下的一写基本指令,对知识点有些还掌握的不好,会通过日后的联系中逐渐进步。