bash脚本常用代码

二维码
| Mar 30, 2019 | 原创

作为服务端码农,避免不了经常和bash脚本打交道,本文汇总了日常开发中常用到的shell代码,用以备忘。

数值比较

注意,数字比较不能使用 = 符号:

-eq	等于
-ne	不等于
-gt	大于
-ge	大于或等于
-lt	小于
-le	小于等于

字符串比较

字符串比较使用一个等号 = 推荐:

=	相等
!=	不等
-z	字符串长度为0,为true
-n	字符串长度不为0,为true

文件目录判断

-a	文件存在
-b	文件存在,且为block文件类型
-c	文件存在,且为字符类型文件
-d	文件存在,且为目录.
-e	文件存在,则为true
-f	文件存在,且为常规文件
-g	文件存在且它的set-group-id 位设置过
-h	文件存在,且为一个硬链接.
-r	文件存在,且可读
-s	文件存在,且文件size大于0
-w	文件存在,且可写
-x	文件存在,且可执行
-L	文件存在,且为软链接文件
-N	文件存在,且修改过
-O	文件存在,且文件所属uid隶属当前执行脚本用户
-S	文件存在,且为socket文件

file1 -ef file2	文件file1 和文件file2的磁盘inode节点相同
file1 -nt file2	如果file1新于file2(对比文件修改日期),或file1存在,file2不存在,则为true
file1 -ot file2	如果file1老于file2,或file2存在但file1不存在,则为true

特殊变量

$#    	表示变量的个数,常用于循环  
$@    	当前命令行所有参数。置于双引号中,表示个别参数  
$*    	当前命令行所有参数。置于双引号中,表示将命令行所有参数当成一个单独参数  
$?    	表示上一个命令退出的状态  
$$    	表示当前进程编号  
$0    	表示当前程序名称  
$!    	表示最近一个后台命令的进程编号  
$HOME   表示当前用户根目录  
$IFS    表示内部的字段分隔符  
$LANG   当前locale默认名称  
$PATH   环境变量  
$PPID   父进程编号  
$PWD    当前工作目录

颜色输出

echo -e "\033[30m 黑色 \033[0m" 
echo -e "\033[31m 红色 \033[0m" 
echo -e "\033[32m 绿色 \033[0m" 
echo -e "\033[33m 黄色 \033[0m" 
echo -e "\033[34m 蓝色 \033[0m" 
echo -e "\033[35m 紫色 \033[0m" 
echo -e "\033[36m 天蓝 \033[0m" 
echo -e "\033[37m 白色 \033[0m"