shell脚本常用命令简单总结

来源:互联网 发布:陈路 微屏软件 编辑:程序博客网 时间:2024/06/06 04:26

整理自个人笔记和网络


1.shell中位置参数


$0 这个程序的执行名字

$n 这个程序的第n个参数值,n=1..9
$* 这个程序的所有参数,此选项参数可超过9个。
$# 这个程序的参数个数
$$ 这个程序的PID(脚本运行的当前进程ID号)
$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)
$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$- 显示shell使用的当前选项,与set命令功能相同

$@ 跟$*类似,但是可以当作数组用


2.shell条件判断命令


–b 当file存在并且是块文件时返回真
-c 当file存在并且是字符文件时返回真
-d 当pathname存在并且是一个目录时返回真
-e 当pathname指定的文件或目录存在时返回真
-f 当file存在并且是正规文件时返回真
-g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真
-h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效
-k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真
-p 当file存在并且是命令管道时返回为真
-r 当由pathname指定的文件或目录存在并且可读时返回为真
-s 当file存在文件大小大于0时返回真
-u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真
-w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。
-o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。



UNIX Shell 里面比较字符写法:


-eq   等于
-ne     不等于
-gt     大于
-lt     小于
-le     小于等于
-ge   大于等于
-z     空串
=     两个字符相等
!=     两个字符不等
-n     非空串



总结:

文档比较运算符  
-e filename   假如 filename存在,则为真  [ -e /var/log/syslog ] 
-d filename   假如 filename为目录,则为真  [ -d /tmp/mydir ] 
-f filename   假如 filename为常规文档,则为真  [ -f /usr/bin/grep ] 
-L filename   假如 filename为符号链接,则为真  [ -L /usr/bin/grep ] 
-r filename   假如 filename可读,则为真  [ -r /var/log/syslog ] 
-w filename   假如 filename可写,则为真  [ -w /var/mytmp.txt ] 
-x filename   假如 filename可执行,则为真  [ -L /usr/bin/grep ] 
filename1-nt filename2   假如 filename1比 filename2新,则为真  [ /tmp/install/etc/services -nt /etc/services ] 
filename1-ot filename2   假如 filename1比 filename2旧,则为真  [ /boot/bzImage -ot arch/i386/boot/bzImage ] 


字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)  
-z string   假如 string长度为零,则为真  [ -z "$myvar" ] 
-n string   假如 string长度非零,则为真  [ -n "$myvar" ] 
string1= string2   假如 string1和 string2相同,则为真  [ "$myvar" = "one two three" ] 
string1!= string2   假如 string1和 string2不同,则为真  [ "$myvar" != "one two three" ] 


算术比较运算符  
num1-eq num2   等于 [ 3 -eq $mynum ] 
num1-ne num2   不等于 [ 3 -ne $mynum ] 
num1-lt num2   小于 [ 3 -lt $mynum ] 
num1-le num2   小于或等于 [ 3 -le $mynum ] 
num1-gt num2   大于 [ 3 -gt $mynum ] 
num1-ge num2   大于或等于 [ 3 -ge $mynum ]


3.shell数组

数组(Array)是一个由若干同类型变量组成的集合,数组均由连续的存储单元组成,最低地址对应于数组的第一个元素,最高地址对应于最后一个元素。

Shell不直接支持如堆栈、队列、链表等数据结构,但可以很容易实现线性数据结构。对于树形、图等复杂的数据结构,shell理论上可以实现,但难度较大。

Shell只支持一维数组,array[x]表示array数组的第x+1个元素,支持的最大数值标号是599 147 937 791。

shell取得数组值(引用数组元素)格式是:${array[x]}


Shell中允许数组空缺元素,即可以不连续地给数组赋值。还可以用圆括号将一组值赋给数组。

city=(Nanjing Beijing Melbourne NewYork)    #圆括号内以空格为分隔符,依次赋给数组元素。

echo "Extracting Substring"  #抽取字串  
echo ${city[*]:0}            #抽取整个数组  Nanjing Atlanta Massachusetts Marseilles  
echo ${city[*]:1}            #抽取从第1个元素到结束的数组  Atlanta Massachusetts Marseilles  
echo ${city[*]:3}            #抽取从第3个元素到结束的数组  Marseilles  
echo ${city[*]:0:2}          #抽取从第0个元素开始的两个元素  Nanjing Atlanta  
echo  
echo "Removing Substring"    #删除字串  
echo ${city[*]#M*a}          #删除匹配M*a的最短字串  Nanjing Atlanta ssachusetts rseilles  
echo ${city[*]##M*a}         #删除匹配M*a的最长字串  Nanjing Atlanta chusetts rseilles  
echo  
echo "Replcing Substring"    #替换子串功能  
echo ${city[*]/M*s/Year}     #替换第1次与M*a匹配的子串  Nanjing Atlanta Year Year  
echo ${city[*]//Mas/Year}    #替换所有与Mas匹配的子串   Nanjing Atlanta Yearsachusetts YeareillesYear
 


4.Linux Shell 中的反引号,单引号,双引号

反引号位 (`) 位于键盘的Tab键的上方、1键的左方。注意与单引号(')位于Enter键的左方的区别。
  在Linux中起着命令替换的作用。命令替换是指shell能够将一个命令的标准输出插在一个命令行中任何位置。
  如下,shell会执行反引号中的date命令,把结果插入到echo命令显示的内容中。
  [root@localhost sh]# echo The date is `date`
  The date is 2011年 03月 14日 星期一 21:15:43 CST
  
  单引号、双引号用于用户把带有空格的字符串赋值给变量事的分界符。
  [root@localhost sh]# str="Today is Monday"
  [root@localhost sh]# echo $str
  Today is Monday
  如果没有单引号或双引号,shell会把空格后的字符串解释为命令。
  [root@localhost sh]# str=Today is Monday
  bash: is: command not found
  单引号和双引号的区别。单引号告诉shell忽略所有特殊字符,而双引号忽略大多数,但不包括$、\、`。
  [root@localhost sh]# testvalue=100
  [root@localhost sh]# echo 'The testvalue is $testvalue'
  The testvalue is $testvalue
  [root@localhost sh]# echo "The testvalue is $testvalue"
  The testvalue is 100

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 短袖t恤袖口大了怎么办 短袖底下卷边了怎么办 棉质短袖衫缩水怎么办 纯棉t恤缩水了怎么办 t恤缩水变小了怎么办 衣服掉在雨棚上怎么办 车衣密码锁忘记密码怎么办 衣服的铁拉链弯怎么办 去旅行衣服皱了怎么办 衣服抽绳出来了怎么办 裤子的绑带掉了怎么办 网纱裙的边卷了怎么办 堵奶宝宝吸不通怎么办 棉麻裙子掉毛怎么办 10个月宝宝吃手怎么办 婴儿连体衣长了怎么办 冰丝面料变长了怎么办 t恤袖口大了怎么办 长袖t恤袖子长了怎么办 机打的扣子掉了怎么办 四个月宝宝头扁怎么办 鞋子前面穿翘了怎么办 休完产假没人带怎么办 休完产假孩子吃奶怎么办 巴布豆童鞋里面臭了到底怎么办 连体裤有点卡档怎么办 宝宝连体衣扣子掉了怎么办 买衣服被骂了怎么办? 把人车刮了跑了怎么办 打工打不下去了怎么办 白色衣服变粉了怎么办 一量血压就紧张怎么办 一紧张就血压高怎么办 不在上班时间在单位受伤怎么办 生活过得太压抑怎么办 高低床踏板断了怎么办 高低床 孩子摔下来怎么办 小孩子太小高低床爬梯怎么办 辞职后单位不发工资怎么办 买了个上下床搬家怎么办 爸妈不让学日语怎么办