Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
脚本格式要求
脚本以#!/bin/bash 开头
脚本需要有可执行权限
编写第一个 Shell 脚本
需求说明
创建一个 Shell 脚本,输出 hello world!
脚本的常用执行方式
Shell的变量的介绍
Shell变量的定义
基本语法:
变量定义的规则:
将命令的返回值赋给变量:
基本语法
快速入门
注意:在输出JAVA_HOME环境变量前,需要让其生效source /etc/profile
多行注释:
:<<!开头,在结尾加上!
介绍
当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量。比如: ./myShell.sh 100 200,这个就是一个执行shell的命令行,可以在myShell脚本中获取到参数信息
基本语法
应用实例
编写一个shell脚本positionPara.sh,在脚本中获取到命令行的各个参数信息
echo "$0 $1 $2"
echo "$* "
echo "$@"
echo "参数个数=$#"
结果:
[root@bogon shell]# ./positionPara.sh 100 200 300
./positionPara.sh 100 200
100 200 300
100 200 300
参数个数=3
基本介绍
就是shell设计者实现已经定义好的变量,可以直接在shell脚本中使用
基本语法
应用实例
#!/bin/bash
echo "当前的进程号=$$"
# 后台方式运行myShell
./myShell.sh & #以后台方式运行
echo "最后的进程的号=$!"
echo "执行的值=$?"
基本介绍
学习如何在shell中进行各种运算操作
基本语法
应用实例
案例1:计算(2+4)* 4的值
案例2:请求出命令行的两个参数【整数】的和
基本语法
[ condition ] (注意condition前后要有空格)
应用实例
[ atguigu ] 返回true
[] 返回false
[ condition ] && echo OK || echo notok 条件满足,执行后面的语句
常用判断条件
应用实例
案例1:“ok”是否等于“ok”
#!/bin/bash
if [ "ok"="ok" ]
then
echo "equal"
fi
案例2: 23是否大于等于22
if [ 23 -gt 22 ]
then
echo "大于"
fi
案例3: /root/install.log目录中的文件是否存在
if [ -e /root/shell/aaa.txt ]
then
echo "存在"
fi
基本语法
if [ 条件判断式 ]
then
程序
fi
或者
if [ 条件判断式 ]
then
程序
elif [ 条件判断式 ]
then
程序
fi
注意事项
应用实例
案例:请编写一个shell程序,如果输入的参数,大于等于60,则输出“及格了”,如果小于60,则输出不及格
#!/bin/bash
if [ $1 -ge 60 ]
then
echo "及格"
else
echo "不及格"
fi
基本语句
case $变量名 in
"值1" )
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值2,则执行程序2
;;
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
应用实例
案例1:当命令行参数是1时,输出“周一”,是2时,就输出“周二”,其它情况输出“other”
#!/bin/bash
case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "other"
;;
esac
基本语法1
for 变量 in 值1 值2 值3...
do
程序
done
应用实例
案例1:打印命令行输入的参数
#!/bin/bash
#使用$*
for i in "$*"
do
echo "the num is $i"
done
#使用$@
for i in "$@"
do
echo "the num is $i"
done
基本语法2
for ((初始值;循环控制条件;变量变化))
do
程序
done
应用实例
案例1:从1加到100的值输出显示【这里可以看出$* 和$@的区别】
#!/bin/bash
SUM=0
for ((i=1;i<=100;i++))
do
SUM=$[$SUM+$i]
done
echo "sum=$SUM"
基本语法
while [ 条件判断式 ]
do
程序
done
应用实例
案例1:从命令行输入一个数n,统计从1+..+n的值是多少?
#!/bin/bash
I=1
SUM=0
while [ $I -le $1 ]
do
SUM=$[$SUM+$I]
I=$[$I+1]
done
echo $SUM
基本语法
read(选项)(参数)
选项:
-p 指定读取值时的提示符
-t 指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了。
变量:指定读取值的变量名
应用实例
案例1:读取控制台输入一个num值
案例2:读取控制台输入一个num值,在10秒内输入
#!/bin/bash
#读取控制台输入一个num值
read -p "请输入一个数num=" NUM1
echo "你输入的值是num1=$NUM1"
#读取控制台输入一个num值,在10s内输入
read -t 10 -p "请输入一个数num2=" NUM2
echo "你输入的值是num2=$NUM2"
shell编程和其他编程语言一样,有系统函数,也可以自定义函数。
basename基本语法
功能:返回完整路径最后/的部分,常用于获取文件名
basename [pathname] [suffix]
basename [string] [suffix]
细节说明
basename命令会删掉所有的前缀包括最后一个(‘/‘)字符,然后将字符串显示出来。suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。
应用实例
案例1:请返回/home/aaa/test.txt的“test.txt”部分
basename /home/aaa/test.txt
dirname基本语法
功能:返回完整路径最后/的前面的部分,常用于返回路径部分
dirname 文件绝对路径 (功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分))
应用实例
案例1:请返回/home/aaa/test.txt的/home/aaa
基本语法
function funname()
{
Action;
[return int;]
}
调用直接写函数名:funname 参数
应用实例
案例1:计算输入两个参数的值
#!/bin/bash
function getSum(){
SUM=$[$n1+$n2]
echo "和是=$SUM"
}
read -p "请输入第一个数n1" n1
read -p "请输入第二个数n2" n2
getSum $n1 $n2
原文:https://www.cnblogs.com/ylcc-zyq/p/12603170.html