Linux Shell
Shell 是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。Shell本身也是一种高级程序设计语言,提供了变量,函数,条件判断,循环等开发语言的功能。
Shell与用户交互的模式
- 命令行交互环境下的Shell
- 执行Shell脚本
Shell基本知识
Shell解释器
使用解释器的语法: #!解释器
(对于程序员来说,/bin/bash
、/bin/sh
常用)
Shell的变量类型
- 环境变量:Shell环境下已经存在的一些系统变量,例如:
PWD
、UID
、PATH
。 - 自定义变量:
变量名=变量值
#!/bin/bash echo "Hello,Shell,欢迎学习Shell,您现在的工作目录是:" echo "当前的工作目录是:$PWD"
- 预定义变量:
$0
当前执行的shell脚本的程序名$1 $2 .... $n
代表第一个、第二个…第n个位置参数的值$#
传递的位置参数的个数$*
所有位置参数的值$?
返回上一条命令是否执行成功,成功为0,失败非0。
Shell脚本执行方式
- 方式一:直接通过脚本文件的位置执行 (必须添加x执行权限)
- 方式二:
sh 脚本文件位置
- 方式三:
source 脚本文件位置
Shell的程序流程控制
if条件判断语法:
#!/bin/bash
echo "执行当前脚本的程序名是$0"
echo "当前脚本接收的位置参数的个数是:$#"
echo "第1个位置参数的值是$1,第5个位置参数的值是$5"
echo "所有位置参数的值是:$*"
echo "上一条命令执行成功了吗?$?"
if [ 判断条件表达式 ]
then
测试通过执行此处脚本
else
测试未通过,在此执行脚本
fi
注意:文件判断的常用选项:
-d
是否为目录-f
是否为文件-e
是否存在
例一:
#!/bin/bash
echo "请输入要判断的文件"
read name # 接收键盘输入,并将输入的结果保存在name变量中
if [ -d "$name" ] # 判断是否为目录
then
echo "this is a directory!"
else
echo "sorry,this isn't directory!"
fi
for循环语句
for 循环变量 in 表达式
do
循环内容
done
while循环语句
read -p "请输入文件名:" name
if [ -e "$name" ]
then
rm -f "$name"
echo "删除成功!"
else
touch "$name"
echo "创建成功"
fi
注意事项
- Shell中的反撇号
`
,相当于$()
命令替换 expr
是expression表达式的缩写,它是一个用于执行运算或字符串操作的命令,例如:expr 30 / 3 expr length "Hello World"
循环示例
#!/bin/bash
num=1
result=0
while [ $num -le 100 ]
do
result=`expr $result + $num`
num=`expr $num + 1`
done
echo $result >> sum.txt
echo "计算完成"