shell常用标识符及应用范例

前言:

Shell脚本是Linux开发工作中常用的工具,但是我一直没有找到一个适合自己的简明扼要的HandBook。在工作过程中整理了一下,贴在这里以备查看。

一、基础篇

1.对文件的判断:(命令执行成功返回值是0,不成功则是非0)

-e filename 如果 filename存在,则为真

-d filename 如果 filename为目录,则为真

-f filename 如果 filename为常规文件,则为真

-L filename 如果 filename为符号链接,则为真

-r filename 如果 filename可读,则为真

-w filename 如果 filename可写,则为真

-x filename 如果 filename可执行,则为真

-s filename 如果文件长度不为0,则为真

-h filename 如果文件是软链接,则为真

2.逻辑判断标识:

-eq           //等于

-ne           //不等于

-gt            //大于 (greater )

-lt            //小于  (less)

-ge            //大于等于

-le            //小于等于

3.特殊变量列表:

变量

含义

$0

当前脚本的文件名

$n

传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。

$#

传递给脚本或函数的参数个数。

$*

传递给脚本或函数的所有参数。

$@

传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。

$?

上个命令的退出状态,或函数的返回值。

$$

当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

4.特殊字符的表达:

 退回  
c 打印一行时没有换行符 这个我们经常会用到  
f 换页  
 回车  
 制表  
v 垂直制表  
\ 反斜线本身 

5.运算符及其优先级:

级别

运算符

说明

13

-, +

单目负、单目正

12

!, ~

逻辑非、按位取反或补码

11

* , / , %

乘、除、取模

10

+, -

加、减

9

<< , >>

按位左移、按位右移

8

< =, > =,  < , >

小于或等于、大于或等于、小于、大于

7

= = , ! =

等于、不等于

6

&

按位与

5

^

按位异或

4

 |

按位或

3

&&

逻辑与

2

| |

逻辑或

1

=, + =, - =, * =, /=, % =, & =, ^ =, | =, << =, >> =

赋值、运算且赋值

二、基础循环及其应用范例:

1.单if与if/elif嵌套:

if 条件表达式  
then #当条件为真时执行以下语句  
命令列表  
else #为假时执行以下语句  

if 条件表达式  
then #当条件为真时执行以下语句  
命令列表  

elif #当条件为真时执行以下语句  

命令列表

elif #当条件为真时执行以下语句  

命令列表

else #执行以下语句

命令列表

2.case多分支结构:

case $newval in

1)          #这里是可能值1

echo 1

;;      #表示第一个分支结束

2)           #这里是可能值 2

echo 2

;;      #第二个分支结束

*)      #表示其他可能值,必须在最后,否则他后面的语句无法执行

echo unkown

esac    #case 语句结束

3.for枚举法与累加格式:

枚举:

for n in {1..10}

do

echo $n

done

累加:

for (( i=1;$i<10;i++))

do

echo $i

done

 

for(( i=1;$i<10;i=$[$i+1’ ])

do

echo $i

done

4.while循环读取 文本:

while read filename

do

  echo $filename

done < names.txt

三、一些注意事项:

1.break 命令不执行当前循环体内break下面的语句从当前循环退出.  

 continue 命令是程序在本循体内忽略下面的语句,从循环头开始执行.

2.将脚本或者命令放到后台执行:

1)在命令后加上 & 字符来实现,需要注意的是输出进程号:sh 1.sh &

2)在命令前使用:nohup command > log.file 2>&1 &

3)将后台运行的程序切回到前台:#fg %2

3.匹配IP地址:

[0-9]{3}.[0-9]{3}.[0-9]{3}.[0-9]{3}   匹配是否为IP地址

4.shell自增的五种办法:

 i=`expr $i + 1`;
 let i+=1;
 ((i++));
 i=$[$i+1];
 i=$(( $i + 1 ))

另外,对于固定次数的循环,可以通过seq命令来实现,就不需要变量的自增了;实例如下:

#!/bin/bash
for j in $(seq 1 5)
do
echo $j
done

值得注意的是seq默认从1开始计数,如:seq 5,则表示1-5的数字,其次,seq -w 表示输出同位数的数字序列,如:seq -w 999 ,则表示从001打印数字到999

5.使用命令来修改密码:

echo 密码 | passwd --stdin 用户名;

附:打印时的字体颜色设置:

echo 输出的字颜色

echo -e ‘e [1;31m this is red color.e[0m’

ansi 控制码表及颜色代码


背景颜色范围:

40--49  

字休颜色: 30--39

ANSI控制码:

40: 黑

30: 黑

33[0m 关闭所有属性

41: 红

31: 红

33[1m 设置高亮度

42: 绿

32: 绿

33[4m 下划线

43: 黄

33: 黄

33[5m 闪烁

44: 蓝

34: 蓝

33[7m 反显

45: 紫

35: 紫

33[8m 消隐

46: 深绿

36: 深绿

33[30m -- 33[37m 设置前景色
    33[40m -- 33[47m 设置背景色
    33[nA 光标上移n行
    33[nB 光标下移n行
    33[nC 光标右移n行
    33[nD 光标左移n行
    33[y;xH 设置光标位置
    33[2J 清屏
    33[K 清除从光标到行尾的内容
    33[s 保存光标位置
    33[u 恢复光标位置
    33[?25l 隐藏光标
    33[?25h 显示光标
附:补充
原文地址:https://www.cnblogs.com/xiaoyuxixi/p/11503777.html