shell
1、变量
$HOME
$PWD
$SHELL
$USER
1)赋值变量 —等号两边不能有空格
a=2 #赋值变量
unset a=2 #取消赋值
2)变量默认类型都是字符串,不能直接进行数值运算
3)变量如果有空格,需要用引号引起来
4)可以把变量提升为全局变量,可供其他shell程序使用 —export 变量名
5)$n ###n 表示数字,$0代表脚本名称,$1-
9
表
示
第
1
−
9
个
参
数
,
10
以
上
的
参
数
,
需
要
用
大
括
号
包
含
,
如
9表示第1-9个参数,10以上的参数,需要用大括号包含,如
9表示第1−9个参数,10以上的参数,需要用大括号包含,如{10}
6)KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲ 获取所有输入参数个数,常用于…* 这个变量代表命令行中所有参数,
∗
把
所
有
参
数
看
成
一
个
整
体
8
)
*把所有参数看成一个整体 8)
∗把所有参数看成一个整体8)@ 这个变量也代表命令行中所有参数,不过
@
把
每
个
参
数
区
分
对
待
9
)
@把每个参数区分对待 9)
@把每个参数区分对待9)? 最后一次执行命令返回的状态,如果是0,代表上一次执行正确,如果非0,则证明不正确,具体数值可自定
2、运算符
1) $((运算式)) 或 $[运算式]
2) expr +,-, * , /, % 注意:expr运算符之间要有空格
3、条件判断 基本语法 [ ],条件非空即ture,条件为空返回false
1) = 字符串比较
2) -lt 小于 less(下) greater(大) equal(等) than
3) -eq 等于
4) -ge 大于等于
5) -le 小于等于
6) -gt 大于
7) -ne 不等于
8) -f 文件存在且是file
9) -e 文件存在
10) -d 存在且是目录存在
11) -r -w -x 判断权限
12) && || 与或命令
4、if判断 if后要有空格
if [ 条件];then
程序
fi
或
if [ 条件]
then
程序
fi
###########示例
#if函数
#if [ $1 -eq 1 ];then
echo “haha”
#elif [ $1 -eq 2 ];then
echo ‘hhee’
#fi
5、case语句
case $变量名 in
“数值1”)
程序1
;;
“数值2”)
程序2
;;
…
*)
如果值与上面都不同,执行此行
;;
esac
########示例
#case $1 in
1)
echo ‘haha1’
;;
2)
echo ‘haha2’
;;
*)
echo “wuliao”
;;
#esac
6、for循环1
for (( 初始值;循环控制条件;变量变化))
do
程序
done
###########示例
#for 循环
#j=0
#for (( i=1; i<=100; i++ ))
#do
j= [ [ [j+$i]
#done
#echo $j
7、for循环2
for 变量 in 值1 值2 …
do
程序
done
###########示例
#for循环2
#for i in $*
#do
echo $i
#done
8、while
while [ 条件判断 ]
do
程序
done
###########示例
#while循环
#i=1
#result=0
#while [ $i -le 100 ]
#do
result= [ [ [result + $i]
i= [ [ [i+1]
#done
#echo $result
9、read读取控制台输入
read(选项)(参数)
选项)
-p :指定读取值时的提示符
-t :指定读取时等待的时间(秒)
参数)
变量:指定读取的变量名
######示例
#read读取
read -t 7 -p "please input: " NAME(表示输入赋值给的变量)
echo $NAME
10、系统函数
1)basename ## 会删除所有前缀包括最后字符,示例如下
[root@wanghaha shell_study]# basename /home/shell_study/
shell_study
[root@wanghaha shell_study]# basename /home/shell_study/01.sh .sh ##后面再加后缀,表示后缀也去掉
01
2)dirname ##从给定的包含绝对路径的文件名中去除文件名(非目录部分),然后反回剩下路径
[root@wanghaha shell_study]# dirname /home/shell_study/01.sh
/home/shell_study
11、自定义函数
1)语法
[funcation] funname[()]
{
Action;
[return int;] ##一般采用$?
}
funname
2)要求
1>必须在调用函数地方之前,先声明函数,shell是逐行运行
2>函数返回值,只能通过$?系统变量获取,可以显示加:return,如果不加,将以最后一条命令运行结果,作为反馈回值,return后面跟数值n(0-255)
####示例:
简单求和函数
function sum()
{
s=0;
s=$[$1 + $2]
echo $s
}
read -p "please input number1: " P1
read -p "please input number2: " P2
sum $P1 $P2