【软件测试】Linux Shell脚本基础

Shell

一种弱类型语言(JAVA是强类型语言),一般是.sh结尾的文件
shell script第一行 #!/bin/bash:声明解释器,其它解释器 /bin/sh、/bin/java、/bin/python

Bash Shell

变量

变量名不能以数字开头
使用变量时带上$,用{}可区分变量的边界

  1. 直接赋值
    语法: var=value =号前后不能有空格
age_=18
name2=tester
  1. read赋值:输入方式
    语法:read [-p "提示信息"] 变量名 可赋值多个变量
read -p "please input:" var1 var2
  1. 命令结果赋值,反引号(Esc键下方的键)
# 语法
var=`命令`
# 将路径结果赋值给path
path=`pwd`

env:环境变量
系统变量都是大写

/etc/profile
# 系统配置文件
/etc/bashrc
#用户配置文件
~/.bashrc

输出

echo

echo hello word

# 反斜杠\:转义
echo i\'m a boy
name=tester

# 单引号:原样输出
echo 'hello $name'

# 双引号:可以替换变量
echo "hello $name"

执行脚本

  1. 推荐用法:./test.sh
    使用脚本第一行声明的解释器来运行脚本,需可执行权限(chmod a+x file
  2. bash test.sh
    使用sh来执行脚本,只能运行bash编写的脚本或语法共通的脚本

分支语句

  • 语法:
if 条件表达式
then
条件表达式成立做的事情
fi

if 条件表达式;then
条件成立则……
else
条件不成立则……
fi

if 条件1;then
条件1成立则……
elif 条件2;then
条件2成立则……
fi

# 多分支case
case 变量的值 in 
匹配的值1)
匹配值1时则……
;;
匹配的值2)
匹配值2时则……
;;
*)
都不匹配时则……
;;
esac
  • 示例:
#!/bin/bash
read -p "please inpput a number: " number
if test $number -gt 5
#if [ $number -gt 5 ]
then
	echo dayu 5
else
	echo ${number}
fi


if test -d /var/log # /var/log是目录吗
then # 是目录则打开
	cd /var/log
	if [ -e /var/log/test.log] # 文件是否存在
	then # 是则输出内容
		text=`cat /var/log/test.log`
		echo $text
	else
		echo False
	fi
else
	echo False
fi

注:if test 条件表达式 等价于 if [条件表达式],用[]时,[]及里的元素左右都要有空格

循环语句

  • 语法:
for 循环条件
do
	循环体
done

while 条件表达式
do
	循环体
done
  • 示例:
#!/bin/bash
# 循环建5个目录
for i in {1..5}
do
	makdir test_$i
done


read -p "please: " num
while [ $num -eq 18 ]
do
	echo num is 18
	sleep 2

注:产生一个数列 {1..10}

函数

  • 语法:
函数名(){
	函数体
}

# 调用函数
函数名
  • 示例:
# 打印家目录路径
test(){
cd ~
path=`pwd`
echo $path
}
# 调用
test

常见操作

  • 声明为只读变量
var=123
readonly var
  • 删除变量
var='test'
unset var
echo $var # 不会输出
  • 获取字符串长度
var=abc
echo ${#var} # 输出3
  • 提取字符串
str="i am a tester"
# 从第1个字符开始截取3个字符
echo ${str:0:3} # 输出 i a
  • 算术运算符
    需配合其它工具使用 awk或expr
    表达式与运算符之间必须有空格
    整体用需反引号包含
#!/bin/bash
var=`expr 1 + 2`
echo "和为:${var}"
运算符说明
-gt大于
-lt小于
-eq等于
-ne不等于
-ge大于等于
-le小于等于
-o或运算,有一个为真,则返回true
-a与运算,都为真,才返回true,否则false
&&and运算符
=两字符串相等,相等返回true
!=两字符串不相等
-z字符串长度是否为0,为0返回true
-n字符串长度是否不为0,为0返回false
$字符串是否不为空
-r file文件是否可读,可读返回true
-w file文件是否可写
-x file文件是否可执行
-s file文件是否不为空,为空返回false
-e file文件是否存在
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值