加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash脚本编程之四――整数测试及特殊变量

发布时间:2020-12-15 16:16:42 所属栏目:安全 来源:网络整理
导读:bash中常用的条件测试有三种: 测试方法: [ expression ] 命令测试法 [[ expression]] 关键字测试法 test expression 整数测试: -gt -le -ne -eq -ge -lt 例: INT1=63 INT2=77 [ $INT1 -eq $INT2 ] [[ $INT1 -eq $NET2 ]] test $INT1 -eq $NET2 文件测试


bash中常用的条件测试有三种:


测试方法:

[ expression ] 命令测试法

[[ expression]] 关键字测试法

test expression

整数测试:

-gt

-le

-ne

-eq

-ge

-lt

例:

INT1=63

INT2=77

[ $INT1 -eq $INT2 ]

[[ $INT1 -eq $NET2 ]]

test $INT1 -eq $NET2


文件测试:

-e FILE:?y?文件是否存在

-f FILE:测试文件是否为普通文件

-d FILE:测试指定路径是否为目录

-r FILE:测试当前用户对指定文件是否有读取的权限

-w FILE:测试当前用户对指定文件是否有写入的权限

-x FILE:测试当前用户对指定文件是否有执行的权限


例:写一个脚本,给定一个文件,如果是普通文件,就显示之;如果是一个目录,亦显示之;否则,显示此为无法识别文件。

#!/bin/bash

#

file=/etc/passwd 定义变量file


if [ ! -e $file ];then 如果文件不存在

echo "no such file." 就显示文件不存在

exit 2 结束脚本

fi


if [ -f $file ];then 如果文件存在就判断是不是普通文件

echo "common file." 是就显示文件为普通文件

elif [ -d $file ];then 否则就测试是否为目录

echo "Directory." 是就显示是目录

else 否则

echo "unknow" 就显示文法识别

fi


定义脚本退出状态码

提前结束脚本:exit

exit #

如果脚本没有明确定义退出状态码,那么,最后执行的一条命令的退出码既为脚本的退出状态码:


测试脚本是否有语法错误:

bash -n +脚本名

逐条显示执行:bash -x +脚本名


bash变量的类型:

本地变量(局部变量)

环境变量

位置变量:$1,$2,.... 引用位置参数 shift:轮替

./filetest,sh /etc/fatab /etc/inittab

$1:/etc/fatab

$2:/etc/inittab

例:能接受一个参数(文件路径),判定:此参数如果是一个存在的文件,就显示“OK”,否则就显示“NO such file.”

#!/bin/bash

#

if [ -e $1 ]; then

echo "OK."

else

echo "NO such file."

fi


例:写一个脚本,给脚本传递两个参数,显示两个参数的和,成积。

#!/bin/bash

if [ $# -lt 2 ];then

echo "Usage:file3.sh ARG1 ARG2"

fi

echo "the sum is $[$1+$2]."

echo "the product is $[$1*$2]"


特殊变量

$?:上一条命令的退出状态码

$#:参数的个数

$*:参数列表

$@:参数列表

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读