shell_条件判断
sort
-n:按数字排序,默认是按照字符串排序.-r:reverse反排序-k a,b:排序的范围,第a到b列-t ":":修改分隔符,例如:cp /etc/passwd /tmp/shsort -n -k 3,4 -t ":" student | awk 'BEGIN{FS=":"}{print $3 "\t" $4}'sort -n -r -k 3,4 -t ":" student | awk 'BEGIN{FS=":"}{print $3 "\t" $4}'
回顾: $?:代表上一条命令是否执行正确
echo $?
或者用逻辑表达[ -f /root ] && echo yes || echo no
条件判断
- 判断的2组格式
test -e /root/install.log[ -e /root/install.log ]
- 文件类型判断(常用选项)
| -e | 文件存在为真 |
|---|---|
| -f | 文件存在且为普通文件则真 |
| -d | 文件存在且为目录则真 |
test -e /root/install.log[ -e /root/install.log ]
- 文件权限(任意用户有权限都算)
| -r | read |
|---|---|
| -w | write |
| -x | execute |
test -w /root/install.log[ -r /root/install.log ]
硬链接(hard link)与软链接(soft link)区别
hard link- 硬链接是仅文件名字不同但是inode号相同的文件
- 硬链接和
原file有相同的inode和date block - 不能对目录建立
- 不能再交叉文件系统建立硬链接,因为
inode在不同文件系统不一样 - 删除一个硬链接不影响相同
inode文件
soft link- 拥有自己的
inode和block,存放的是指向文件的路径,类比于windows的快捷方式
- 可以对目录创建
- 不存在的文件和目录也可以创建
- 可以在交叉的文件系统创建
- 拥有自己的
- 文件时间比较
| file1 -nt file2 | new time 修改时间是否新 |
|---|---|
| file1 -ot file2 | old time |
| file1 -ef file2 | equal file,判断文件inode是否相同,即是否为同一文件 |
test /etc/passwd -nt /tmp/temp && echo 1 || echo 2
[ /etc/passwd -nt /tmp/temp ] ; echo $?
- 整数之间的比较
eq equal |
相等 |
|---|---|
ne not equal |
不相等 |
gt greater than |
大于 |
ge greater equal |
大于等于 |
it lower than |
小于 |
ie lower equal |
小于等于 |
test 1 -eq 2 && echo yes || echo no
[ 1 -eq 2] ; echo $?
- 字符串之间的比较
-z |
为空则真 |
|---|---|
-n |
非空则真 |
!= |
相等 |
== |
不相等 |
test -z "string" && echo yes || echo no
[ -z "string" ] ; echo $?
- 逻辑判断
-a and |
[ -z "" -a -z "addd"] ; echo $? |
|---|---|
-o or |
[ -z "" -o -z "dd" ] ; echo $? |
! |
[ ! -z "ad" ] ; echo $? |
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!
