查看使用shell
临时环境变量
永久环境变量
/etc/profile中定义 ,所有用户可用
$HOME/.bash_profile 针对特定用户有效
预定义环境变量
如$PATH、$HOME、$SHELL、$PWD
创建SHELL
执行shell脚本
sh file.sh 或者让脚本有执行权限(绝对路径或者相对路径)
变量规则
1.变量名称可以是字母、数字、下划线组成,但是不能以数字开头,环境变量建议大写
2.变量的类型默认都是字符串类型
3.变量用=连接值,等号两边不能有空格
4.变量的值如果有空格,需要使用单引号或者双引号
变量分类
自定义变量,环境变量,位置参数变量,预定义变量(可以用set查看系统存在的所有变量,释放变量unset,用readonly修饰的变量不能删除)
变量调用
在变量名前面加上:$
变量赋值
1.STR="hello"
2.A=`ls -la` 或者 $(ls -la) 将执行结果赋给变量 数字:a=$((4+5))
3.A=$STR
4.a="$aa"456 a=${aa}789
环境变量(在当前shell和子shell都有效)
export 变量名=变量值
位置参数变量
$0 命令本身 $1-9代表第1个到第9个参数
$* 代表命令行中所有的参数,以"$1 $2 $3 $4"的形式输出
$@ 代表命令行的所有参数,以“$1”“$2”"$3"的形式输出
$# 代表命令行参数的个数
$*和$@相同与 不同点:
都表示传递给函数或者脚本的参数,不被双引号包含时,都以"$1" "$2" ..."$n"的形式输出
当被双引号包含时,“$*”会将参数作为一个整体,而"$@"会将各个参数分开
eg:
结果:
预定义变量
$? 执行上一个命令的返回值,返回0代表成功,非0表示失败
$$ 当前进程的PID,即当前执行脚本生成的进程号
$! 后台运行的最后一个进程的进程号PID,&
read
read 【-p提示语句】【-n字符个数】【-t等待时间】【-s隐藏输入】
$()和${}的区别
$()和``的作用一样,都表示优先执行的命令 eg:echo $(ls a)
${}是取变量
$(( )) 是适用于数值运算 eg:$((1+2))
内置test命令
1.[ expression ] 注意:首尾都有一个空格 2.test expression
测试范围:整数,字符串,文件
当表达式结果为真时,test返回值是0,否则为非0,$?的结果为0,否则为非0
字符串测试
[ str1 == str2 ] 测试是否相等
[ str1 != str2 ] 测试是否不相等
[ str1 ] 测试是否不为空
[ -n str1 ] 测试是否不为空
[ -z str1 ] 测试是否为空
整数测试
[ int1 -eq int2 ] 测试是否相等
[ int1 -ge int2 ] 测试是否>=
[ int1 -gt int2 ] 测试是否大于>
[ int1 -le int2 ] 测试是否<=
[ int1 -lt int2 ] 测试是否小于<
[ int1 -ne int2 ] 测试是否不相等
文件测试
[ -d file ] 是否为目录
[ -e file ] 文件是否存在
[ -f file ] 文件是否常规文件
[ -L file ] 文件存在并且是一个符号链接
[ -r file ] 是否可读
[ -w file ] 是否可写
[ -x file ] 是否可执行
多重条件测试
条件1 -a 条件2 并且的关系 条件1 -o 条件2 或的关系 ! 取反
流程if控制语句
if [ ]
then
//TODO
elif [ ]
then
//TODO
else
//TODO
fi
流程case控制语句
case $变量 in
1)
echo ""
;;
2)
echo ""
;;
*)
echo ""
esac
流程for控制语句
第一种:
for N in 1 2 3
do
//TODO
done
第二种
for((i=0;i<=5;i++))
do
//TODO
done
流程while控制
第一种
while [ ]
do
//TODO
done
第二种
自定义函数
说明:1.函数需要先定义,在调用
2.ruturn value 来获取函数的返回值
3.函数在当前shell中执行,可以使用脚本中的变量
脚本测试
sh -x script 执行该脚本并显示所有变量的值
sh set -x script 对部分脚本测试
sh -n script 不执行脚本,只是检查语法,返回语法错误
sh -v script 执行并显示脚本