目录
一、学习Shell脚本编程前,先学习脚本三个变量:系统变量、用户变量、环境变量。
一、学习Shell脚本编程前,先学习脚本三个变量:系统变量、用户变量、环境变量。
系统变量:系统变量通常写在/etc/profile或/etc/profile.d中,对所有用户生效,常用变量列举了以下几点:
1、$?:表示脚本执行的状态,0表示正常,其他表示错误
2、$$:表示进程的id;Shell本身的PID(ProcessID,即脚本运行的当前 进程ID号)
3、$!:Shell最后运行的后台Process的PID(后台运行的最后一个进程的 进程ID号)
4、$0:表示执行的脚本名称
5、$1:表示第一个参数
6、$2:表示第二个参数
7、$*:表示执行脚本传入参数的列表(不包括$0,一个参数总体)
8、$@:表示执行脚本传入参数的所有个数(不包括$0,多个参数个体)
9、$#:表示执行脚本传入参数的个数
理解系统变量的含义:
#!/bin/sh
MY_SHELL_PATH=`dirname $0`
echo "print shell script location:"
echo ${MY_SHELL_PATH}
echo "===================================="
echo "enter shell script location:${MY_SHELL_PATH}"
cd `dirname $0`
echo "list current directory content:"
ls -ltr
echo "===================================="
echo "shell script name=$0"
echo "===================================="
echo "first args=$1"
echo "===================================="
echo "second args=$2"
echo "===================================="
echo "arguments number=$#"
echo "===================================="
echo "arguments list content=$@"
echo "===================================="
echo "arguments list content=$*"
echo "===================================="
echo "the process id is " "$$"
echo "===================================="
echo "the shell execute return value is " "$?"
echo "===================================="
echo "the all paramters:"
for i in "$@"
do
echo $i
done
echo "===================================="
echo "the all paramters:"
for i in "$*"
do
echo $i
done
echo "===================================="
区分$@与$*,通过for循环结果判断如下:
用户变量:用户变量通常写在用户的个人配置文件~/.profile中,只对当前用户生效,用户定义的变量名必须由字母,数字及下划线组成,并且变量名的第一个字符不能为数字,常用变量列举了以下几点:
1、加载环境变量:export JAVA_HOME=/opt/jdk1.8
2、自定义变量:export aa=22
环境变量:则主要是在程序运行时需要设置, 关闭则变量消失,一般会添加到用户变量文件里,列举了以下几点:
1、PATH:命令所示路径,以冒号为分割。
2、HOME:打印用户家目录。
3、SHELL:显示当前shell类型。
4、USER:打印当前用户名。
5、ID:打印当前用户ID信息。
6、PWD:显示当前所在路径。
7、TERM:打印当前终端类型。
8、HOSTNAME:显示当前主机名。
二、特殊字符:
\ ##转译单个字符
"" ##弱引用,批量转译""中出现的字符,不能转译 \ ` ! $
'' ##强引用,批量转译''中出现的字符
`` ##将''中命令的输出信息,赋值给变量,同 $()
${} ##变量声明,在需要时,用来确定变量边界
$? ##是命令在执行完成后产生的退出值,当$?=0时表示命令没有错误输出
三、声明变量:
declare [+/-][选项] 变量名
选项:
-:给变量舍得类型属性
+:取消变量的类型属性
-a:将变量声明为数组型(x、y)
-i:将声明的变量视为整数,对它赋值时会进行算术求值,不过仅支持最基本的数学运算,不支持逻辑运算、自增自减等,所以很少使用。
-x:将变量声明为环境变量
-r:将变量声明为只读变量
-p:查看变量的被声明的类型
四、if语句逻辑运算符:
-e 通过文件名文件是否存在
-f 通过文件名判断是否是文件
-d 通过文件名判断是否为目录
-eq 判断两个数值是否相等
-nq 判断两个数值是否不相等
-gt 判断第一个数值是否大于第二个数值
-lt 判断第一个数值是否小于第二个数值
-ge 判断第一个数值是否大于等于第二个数值
-le 判断第一个数值是否小于等于第二个数值
-z 判断字符串是否是空串
-n 判断字符串是否不是空串
= 判断两个字符串是否相等
!=判断两个字符串是否不相等
-a (and)相等于&&
-o (or)相当于||
理解if 判断:
#!/bin/bash
read -p "请输入一个数字:" num
# 实现判断输入的字符是数字还是字母或者是其他符号
function isNum(){
if [[ $1 =~ ^[a-zA-Z]+$ ]] # 正则匹配多个输入的字符
then
echo "$1 是纯字母"
return 1
elif [[ $1 =~ ^[0-9]+$ ]] # 匹配多个数字
then
echo "$1是纯数字"
return 0
else
echo "$1是其他字符"
return 1
fi
}
# 调用函数
isNum $num
#判断函数的返回结果
if [ $? == 0 ]
then
if [ $num -gt 10 ]
then
echo "$num 大于10"
elif [ $num -eq 10 ]
then
echo "$num 等于10"
else
echo "$num 小于10"
fi
else
echo "输入内容不符合要求"
fi
echo "结束!"
五、for 语句循环:
#!/bin/bash
declare -i SUM=0
for i in {1..100}; #或者 for i in `seq 1 100`
do
let SUM=$SUM+$i
done
echo "1+..+100=$SUM"
六、while语句循环:
echo "***猜商品价格是多少**"
read -p "输入你心里猜测的数" num
a=0
sum=0
price=$[$RANDOM % 1000 ]
while [ $a -eq 0 ]
do
let num++
if [ $num -eq $price ];then
echo "你猜对了"
let a++
elif [ $num -lt $price ];then
echo "你猜小了"
elif [ $num -gt $prie ];then
echo "你猜大了"
fi
done
echo "你总共猜对了几次"
上一篇:Linux高阶—接口性能压测jmeter(五)
下一篇:Linux高阶—企业shell脚本实战(七)