shell中test命令及判断符号[ ]的用法统计
来源:互联网 发布:linux 查看服务器版本 编辑:程序博客网 时间:2024/05/22 12:26
一、test命令的测试功能
(1)、关于某个文件名的"文件类型"判断,eg: test -e filename表示存在否
-e :该文件名是否存在(常用)
-f :该文件名是否存在且为文件(file)(常用)
-d :该文件名是否存在且为目录(directory)(常用)
-b :该文件名是否存在且为一个block device设备
-c :该文件名是否存在且为一个character device设备
-S :该文件名是否存在且为一个Socket文件
-p :该文件名是否存在且为一个FIFO(pipe)文件
-L :该文件名是否存在且为一个连接文件
(2)、关于文件的权限检测,eg:test -r filename 表示是否可读(但root权限常有例外)
-r :检测该文件名是否存在且具有“可读”的权限
-w :检测该文件名是否存在且具有“可写”的权限
-x :检测该文件名是否存在且具有“可执行”的权限
-u :检测该文件名是否存在且具有“SUID”的属性
-g :检测该文件名是否存在且具有“SGID”的属性
-k :检测该文件名是否存在且具有“Sticky bit”的属性
-s :检测该文件名是否存在且为“非空白文件”
(3)、两个文件之间的比较,eg:test file1 -nt file2
-nt :(newer than)判断file1是否比file2新
-ot :(older than)判断file1是否比file2旧
-ef :判断file1与file2是否为同一文件,可用在判断hard link的判定上。主要意义在于判定两个文件是否均指向同一个inode
(4)、关于两个整数之间的判定,eg:test n1 -eq n2
-eq :两数值相等(equal)
-ne :两数值不等(not equal)
-gt :n1大于n2(greater than)
-lt :n1小于n2(less than)
-ge :n1大于等于n2(greater than or equal)
-le :n1小于等于n2(less than or equal)
(5)、判定字符串的数据
Test -z string判定字符串是否为0,若string为空字符串,则为true
Test -n string判断字符串是否为非0,若字符串为空,则为false 注:-n也可省略
test str1 = str2判定str1是否等于str2,若相等,则回传true
test str1 != str2判定str1是否不等于str2,若相等,则回传false
(6)、多重条件判定,eg:test -r filename -a -x filename
-a :两个条件同时成立!例如:test -r file -a -x file,则file同时具有r与x的权限时,才回传true
-o :任何一个条件成立!例如:test -r file -o -x file,则file具有r或x的权限时,就可回传true
! :反向状态,eg:test ! -x file,当file不具有x时,回传true
例如:test -z $filename && echo "You must input a filename! " && exit 0 //判断变量filename是否为空字符串 空的话警告并退出程序
test ! -e $filename && echo "The filename '$filename' DO NOT exists" && exit 0 //判断filename文件是否存在,不存在警告退出
test -f $filename && filetype="regulare file" //判断filename文件名是否存在且为文件,是文件的话,赋值给变量filetype为标准文件
test -d $filename && filetype="directory" //判断filename文件名是否存在且为目录,是目录的话,赋值给变量filetype为目录文件
test -r $filename && perm="readable" //判断filename文件名是否存在且具有“可读”权限,有的话赋值给变量perm为可读
test -w $filename && perm="$perm writable" //判断filename文件名是否存在且具有“可写”权限,有的话重新赋值给变量perm追加可写权限
test -x $filename && perm="$perm executable" //判断filename文件名是否存在且具有“可执行”权限,有的话重新赋值给变量perm追加可执行权限
echo “The filename:$filename is a $filetype”
echo "And the permissions are :$perm"
二、判断符号[ ]
[ -z "$HOME" ]; echo $?
需要特别提醒的是:在bash的语法中使用中括号作为shell的判断时,中括号两端需要有空格符来分隔。
假设空格键用“口”表示 例子:[口“$HOME”口==口“$MAIL”口] //(==一般用于逻辑判断;=一般用于变量赋值)
注:中括号【】内的每个组件都需要有空格键来分隔;
在中括号内的变量,最好都以双引号“ ”括号起来;
在中括号内的常量,最好都以单引号或双引号括号起来。
中括号判断一般常用在条件判断式if......then......fi中
eg:read -p “Please input (Y/N):” yn
[ "$yn" == “Y” -o “$yn” == "y" ] && echo "OK, continue" && exit 0 //当用户输入“Y”或“y” 时 输出OK,continue
[ "$yn" == "N" -o "$yn" == "n" ] && echo "oh! interrupt!" && exit 0 //当用户输入“N”或“n”时 输出oh!interrupt!
echo "I don't know what your choice is" && exit 0
需
- shell中test命令及判断符号[ ]的用法统计
- shell中test命令用法详解
- shell中test命令用法详解
- shell中test命令用法详解
- shell中test命令用法详解
- shell中test命令用法详解
- shell中test命令用法详解
- SHELL test [ 命令用法
- SHELL test [ 命令用法
- shell test命令用法
- SHELL test 命令用法
- SHELL test [ 命令用法
- Linux shell 的 test 命令用法详解
- Shell脚本的test命令用法
- Linux shell 的 test 命令用法详解
- Linux shell 的 test 命令用法详解
- Linux shell 的 test 命令用法详解
- Linux shell 的 test 命令用法详解
- pgmemcache installation
- JavaEE之MVC框架组合(SpringMVC+Spring4.0+Mybatis3.2)搭建过程详解
- 面试题(微软)S-expression
- IntelliJ IDEA 配置 .ideavimrc
- PGBouncer介绍及使用方式
- shell中test命令及判断符号[ ]的用法统计
- 12.27学习
- listview的上滑下滑监听,上下滑监听隐藏顶部选项栏
- 第18章 JAVA I/O系统
- openwrt之wrtnode学习日记day5
- begin
- Lifecycle Sorter插件
- codeforce 659B
- 如何禁止svg图的放大缩小功能