文章目录
前言
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。
一、Shell变量
规则:
· 命名只能使用英文字母、数字和下划线,首个字符不能以数字开头。
· 中间不能有空格,可以使用下划线(_)
· 不能使用标点符号
· 不能使用bash里的关键字(可用help命令查看保留关键字)
1、自定义变量
定义变量的格式:
变量名=变量值
取消变量的格式:
unset 变量名
注意事项:
√ =两边不能有空格,不要使用关键字做变量名,如:ls 、 cd等;
√ 如果变量名已经存在则覆盖之前的变量值
√ 变量名称有:字母/数字/下划线,不能以数字开始
2、系统预设变量
① 环境变量(变量名通常大写,有操作系统维护)
存储在/etc/profile或~/.bash_profile
常见的环境变量有:PATH \ PWD \ USER \ UID \ HOME \ SHELL
② 位置变量(bash内置变量,存储脚本执行时的参数)
存储脚本执行时的参数
使用$n表示,n为数字序列号
通过位置变量创建系统帐户,配置密码
[root@localhost ~]# vim /root/user.sh
#!/bin/bash
useradd "$1" //创建用户
echo "$2" | passwd --stdin "$1" //给用户设置密码
[root@localhost ~]# sh /root/user.sh abc 123
③ 预定义变量(bash内置变量,可以调用但是不能赋值或修改)
用来保存脚本程序的执行信息
直接使用这些变量,不能直接为这些变量赋值
变量名 | 含义 |
---|---|
$0 | 当前所在的进程或脚本名 |
$$ | 当前运行进程的PID号 |
$? | 命令执行后的返回状态,0表示正常,1或其他值表示异常 |
$# | 已加载的位置变量的个数 |
$* | 所有位置变量的值 |
3、变量中引号的区别
① 多种引号的区别
引号 | 区别 |
---|---|
双引号“” | 允许扩展,以$引用其他变量 |
单引号‘’ | 禁用扩展,即便$也视为普通符号 |
反引号`` | 将命令的执行输出作为变量值,$()与反引号等效 |
② 全局变量与局部变量
局部变量:新定义的变量默认只是在当前shell环境中有效,无法在子shell环境中使用 全局变量:系统中的任何shell环境中都有效二、Shell语句
1、条件测试
①比较操作符介绍
操作符 | 含义 |
---|---|
-eq | 等于(equal) |
-ne | 不等于(not equal) |
-ge | 大于或等于(greater or equal) |
-le | 小于等于(less or equal) |
-gt | 大于(greater than) |
-lt | 小于(less than) |
②文件状态操作符介绍
操作符 | 含义 |
---|---|
-e | 判断对象是否存在(exist),若存在则结果为真 |
-d | 判断对象是否为目录(directory),是则为真 |
-f | 判断对象是否存在为一般文件(file),是则为真 |
-r | 判断对象是否有可读权限(read),是则为真 |
-w | 判断对象是否有可写权限(write),是则为真 |
-x | 判断对象是否有可执行权限(excute),是则为真 |
③控制操作符介绍
操作符 | 含义 |
---|---|
; | 分隔多个命令。执行时互不干扰 |
&& | 前后的两个命令都执行成功,整条命令才是正确的,否则是错误 |
II | 前后的两条命令,任何一条执行成功,整体命令都是正确 |
2、if判断语句
①if单分支语句
语法格式:
if 条件;then
命令
fi
实例:
[root@localhost ~]# vim /root/shell/user.sh
#!/bin/bash
read -p "请输入用户名:" user
read -s -p "请输入密码:" pass
if [ ! -z "$user"] && [ ! -z "$pass"];then
useradd "$user"
echo "$pass" | passwd --stdin "$user"
fi
②if双分支语句
if 条件;then
命令1
else
命令2
fi
③if多分支语句
语法格式:
if 条件1;then
命令1
elif 条件2;then
命令2
else
命令3
fi
实例:
[root@localhost ~]# vim /root/shell/number.sh
#!/bin/bash
clear
num=$[RANDOM%10+1]
read -p "请输入10以内的随机整数:"guess
if [ $guess -gt $num ];then
echo "Oops,猜大了"
elif [ $guess -lt $num ];then
echo "Oops,猜小了"
else
echo "恭喜,猜对了,就是:$num"
fi
3、while循环
√ 反复测试条件,只要成立就执行命令
语法格式:
while 条件
do
命令
done
实例:
[root@localhost ~]# vim /root/while.sh
#!/bin/bash
i=1
while [ $i -le 5 ]
do
echo $i
done
4、for循环
作用:减少代码的冗余和重复
语法格式1:
for 变量 in 值列表
do
命令
done
语法格式2:
for (初值;条件;步长)
do
命令序列
done
实例:
[root@localhost ~]# vim /root/for.sh
for i in 1 2 3 4 5
do
echo "this is a number $i"
done
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。