shell是一个命令解释器
shell脚本的执行方式:
一般以.sh 结尾
开头:
#/bin/bash
方式1:给出文件权限(推荐)
权限:
chmod 744 myShell.sh
执行相对路径,绝对路径都可以
方式2:(sh+脚本)不推荐
sh ./myShell.sh
shell的变量:
shell中的变量分为 系统变量和用户自定义变量
1.系统变量
$HOME
$PWD
$SHELL
$USER
...
2.显示当前shell中的所有变量
set
shell变量的定义
定义变量:变量 = 值
撤销变量: unset 变量
静态变量:readonly 变量 不能usnet
#显示行号
:set nu
变量定义的规则:
- 数字字母下滑线组成,数字不可以开头
- 等号两侧不能有空格
- 变量名习惯使用大写
将命令的返回值返回赋值给变量:
A=`res`
A=$(res) 推荐使用
设置环境变量:
export 变量名=变量值 (将shell变量输出)
source 配置文件 (使配置文件生效)
echo $变量名
多行注释:
:<<!
.....
!
位置参数变量:
$0 $1 $2 ... ${10} ${11}
$* 获取所有参数 把参数看为一个整体
$@ 获取所有参数 区别对待参数
$# 参数的个数
预定义变量:
$$ #当前进程号
$! #后台运行最后一个进程进程号
$? #脚本执行状态
运算符的使用:
$((运算符))
$[运算符] (推荐)
`expr m + n`
- 计算 (2+3)*4
条件判断:
基本语法:
[ condition ] (condition前后有空格)
判断语句:
1.两个整数的比较:
= 字符串
-lt <
-le <=
-eq ==
-gt >
-ge >=
-ne !=
2.文件权限
-r 读权限
-w 写权限
-x 执行权限
3.文件类别
-f 文件存在并是一个常规文件
-e 文件存在
-d 文件存在并是一个目录
流程控制
if判断语句
# else if
if [ condition ]
then
程序
elif [ condition ]
程序
fi
# else
if [ condition ]
then
程序
else
程序
fi
case语句
#!/bin/bash
case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "other"
esac
for 循环
#类似于java中的增强for循环
for 变量 in 值1 值2 值3
do
程序
done
#一般的for循环
for ((初始值;循环控制条件;变量变化))
do
程序
done
例子1:
#!/bin/bash
#$*
num1=$*
for i in "$*"
do
echo "numebr is $i"
done
#$@
num2=$@
for i in "$@"
do
echo "number is $i"
done
例子2:
sum=0
for (( i=0 ; i<10 ; i++ ))
do
sum=$[$sum+$i]
done
echo "$sum"
while循环
while [ condition ]
do
程序
done
例子1:
#!/bin/bash
i=0
sum=0
while [ $i -le $1 ]
do
sum=$[$i+$sum]
i=$[$i+1]
done
echo "sum = $sum"
读取控制台的输入:
read (选项) (参数)
-p: 指定读取时式的提示符
-t: 指定等待时间
例子:
#!/bin/bash
函数
系统函数
basename
功能:返回完整的路径最后/的部分,常用于获取文件名
basename[pathname][suffix]
basename[string][suffix]
dirname返回路径部分
dirname[stirng][suffix]
自定义函数
function funname()
{
action;
return int;
}
例子:
#!/bin/bash
function getsum(){
sum=$[$a+$b]
echo "$sum"
}
read -p "输入数字a" a
read -p "输入数字b" b
getsum $a $b
网友评论