shell中的文件、变量、字符串判断表达式及$等特殊字符
创始人
2024-02-10 08:24:46

特殊字符

Shell脚本变量的含义

1、$#:表示执行脚本传入参数的个数
2、$*:表示执行脚本传入参数的列表(不包括$0)
3、$$:表示进程的id;Shell本身的PID(ProcessID,即脚本运行的当前 进程ID号)
4、$!:Shell最后运行的后台Process的PID(后台运行的最后一个进程的 进程ID号)
5、$@:表示执行脚本传入参数的所有个数(不包括$0)
6、$0:表示执行的脚本名称
7、$1:表示第一个参数
8、$2:表示第二个参数
9、$?:表示脚本执行的状态,0表示正常,其他表示错误

$* 和 $@的差异

变量替换

假设我们定义了一个变量file=/dir1/dir2/dir3/my.file.txt,使用${ }分别替换,得到不同的变量值:

file=${file#*/},删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
file=${file##*/},删掉最后一个 / 及其左边的字符串:my.file.txt
file=${file#*.},删掉第一个 . 及其左边的字符串:file.txt
file=${file##*.},删掉最后一个 . 及其左边的字符串:txt
file=${file%/*},删掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3
file=${file%%/*},删掉第一个 / 及其右边的字符串:(空值)
file=${file%.*},删掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
file=${file%%.*},删掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my

记忆方法

# 是去掉左边(键盘上#在 $ 的左边)
% 是去掉右边(键盘上% 在$ 的右边)
单一个上面的符号是最小匹配
两个上面的符号是最大匹配

文件表达式

在shell脚本中,if表达式对文件判断时,文件前面的-d、-e、-f、-L、-r、-x等表示什么意思呢?

-e filename # e即exist,表示如果filename存在,则为真
-d filename # d即dictionary,表示如果filename为目录,则为真 
-f filename # f即file,表示如果filename为常规文件,则为真
-L filename # L即symbolic links,表示符号链接,如果 filename为符号链接,则为真
-r filename # r即readable,如果 filename可读,则为真 
-w filename # w即writable,如果 filename可写,则为真 
-x filename # x即executable,如果 filename可执行,则为真
-s filename # 如果文件长度不为0,则为真
-h filename # 如果文件是软链接,则为真
filename1 -nt filename2 # newer than,如果 filename1比 filename2新,则为真。 
filename1 -ot filename2 # older than,如果 filename1比 filename2旧,则为真。 

变量表达式

在shell中,数字型变量与字符型变量表达式之间的判断是不同的。使用eq、ne表示数字型变量之间是否相等,而使用=、!=进行字符串变量之间关系的判断。

整数变量表达式

-eq # equal,等于
-ne # not equal,不等于
-gt # greater,大于
-ge # greater than or equal,大于等于
-lt # less than,小于
-le # less than or equal,小于等于

字符串变量表达式

在shell脚本中,if表达式对字符串判断时,文件前面的-n、-z等又表示什么意思呢?

字符串判等、判空

If  [ $a = $b ]            		  # 表示如果字符串string1等于string2,则为真
if  [ $string1 !=  $string2 ]     # 如果string1不等于string2,则为真       
if  [ -n $string  ]               # 如果string 非空(非0),则为真
if  [ -z $string  ]               # 如果string 为空(或0),则为真
if  [ $sting ]                    # 如果string 非空,返回0 (和-n类似) 

PS:字符串允许使用赋值号=做等号,而不是==

逻辑非

在shell中,逻辑非使用! 表示。

if [ ! 表达式 ]
if [ ! -d $num ]    # 如果不存在目录$num

逻辑与

在shell中,逻辑与使用-a 表示,a即and。

if [ 表达式1  -a  表达式2 ]

逻辑或

在shell中,逻辑或使用-o 表示,o即or。

if [ 表达式1  –o 表达式2 ]

相关内容

热门资讯

猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...