本章节来看看简单的shell编程
- 脚本要以#!/bin/bash开头
- 脚本要有可执行权限
脚本的常用执行方式:
方式1(输入脚本的绝对路径或相对路径)
说明:首先要赋予helloworld.sh脚本的+x权限,再执行脚本
方式2 (sh + 脚本)
说明:不用赋予脚本+x权限,直接执行即可
$HOME $PWD $SHELL $USER等等
运行set
可以看到当前shell中所有变量
变量名称可以由字母、数字、下划线组成,但不能是数字开头
等号两边不能有空格
变量名称一般习惯大写,规范
A=‘date’ 或
A=$(date)
export 变量名=变量值 (让shell变量输出为环境变量/全局变量)
source 配置文件 (让修改后的配置信息立即生效)
echo $变量名 (查询环境变量的值)
# 单行注释
:<<!
多行注释内容
多行注释内容
多行注释内容
!
$n (n为数字,$0代表命令本身, $1-$9代表第一到第九个参数,十个以上的参数需要用大括号表示如 ${100})
$* (把所有命令行参数看成整体)
$@ (也代表命令行所有参数,不过把参数区分对待)
$# (代表命令行中所有参数个数)
是shell设计者(官方人员)事先定义的变量,可以直接使用
$$ (当前进程的进程号(PID))
$! (后台运行的最后一个进程的进程号(PID))
$? (最后一次执行的命令的返回状态。如果这个值为0,证明上一个命令正确执行,如果非0(具体哪个数)由命令自己决定,则证明上一个命令执行不正确了)
基本语法:
1. "$((运算式))"或"$[运算式]"或 expr m + n (expression表达式,写法2. 奇怪)
3. expr运算符间有空格
4. expr m - n
5. 要把得到的结果赋值需要用反引号引起来,例A=' expr 2 + 3 '
6. expr \* / % 乘 除以 取余
expr真的有点麻烦,还得分步走,我还是选一二方法,尽量2吧。
条件前后是由空格的,非空为真,0为true,>1为false
[ 条件 ]
[ 条件 ] && echo OK || echo notok ···条件满足,执行后边的语句,运算符是且和或
判断条件
if [条件判断式];then
程序
或者
if [条件判断式]
then
程序
elif [条件判断式]
then
程序
fi
如果变量值=值1,执行程序1
如果变量值=值2,执行程序2
…
都没有则执行最后一个
case $变量名 in
"值1" )
程序1
;;
"值2" )
程序2
;;
#省略其他分支
*)
如果都不是以上的值,执行此程序
;;
esac
for 变量 in 值1 值2 值3...
do
程序
done
for ((初始值;循环控制条件;变量变化))
do
程序
done
记得有空格
while [ 条件判断式 ]
do
程序
done
read (选项)(参数)
-p : 指定读取值时的提示符
-t: 指定读取值的等待时间,超时则不等待
参数
变量:指定读取值的变量名
举例,运行如下程序,系统一直等待系统输入(回车结束)
read -p "请输入您的数字" A
举例basename:
basename基本语法:
功能:返回完整路径最后的/部分,常用于获取文件名
basename [pathname][suffix] ···basename命令会删掉所有前缀包括最后一个'/'字符,最后将字串显示出来
basename /home/aaa/test.txt ···运行后会返回test.txt
举例dirname:
返回完整路径/的前面部分,常用于获取路径
dir 文件绝对路径
基本语法:
[ function ] funname[()]
{
Action;
[return int;]
}
调用直接写函数名
举例:
此类参数选择动态获取
function getsum()
{
SUM=$[$n1+$n2]
echo "和是=$SUM"
}