shell基础

shell基础


程序规范

首先说明使用的是什么shell,如:#!/bin/bash    (#!是一个特殊的表示符,其后,跟着解释此脚本的shell路径,比如#!/bin/python2.7  和 #!/bin/python3)

注明该脚本的内容功能、操作系统版本信息、文件创建者等


运行方式

bash<文件名

bash文件名

.文件名(不创建子进程)

./文件名(需要可执行权限)

通过在PATH变量添加路径


常用命令

echo

echo要使用转义字符时需要加上-e

如echo-e “hahaha hahaha”

输出有颜色、粗体的字体

1.有颜色echo -e "33[字背景颜色;字体颜色m 字符串 33[0m"

33[ ; m …… 33[0m 指明颜色的开始和结束,如果不指明结束,后边所有的都是那个颜色格式

字背景颜色范围:40----49 
40:黑 
41:深红 
42:绿 
43:黄色 
44:蓝色 
45:紫色 
46:深绿 
47:白色
字体颜色:30-----------39 
30:黑 
31:红 
32:绿 
33:黄 
34:蓝色 
35:紫色 
36:深绿 
37:白色

2.加粗

33[0m 关闭所有属性 
33[1m 设置高亮度 (就是加粗)
33[4m 下划线

响铃:[Ctrl+G]<=>07

清屏:[Ctrl+L]


read

读取用户输入,并赋值给用户自定义变量

注:从输入设备读取1行,第1个字符串存入第1个变量,第2个字符串存入第2个变量……如果输入字符串个数多馀定义的变量,则所有剩馀字符串赋值给最后1个变量


test(测试字符串、数值、文件属性)

test命令测试的条件成立时,命令返回值为真(0),否则返回值为假(非0).

 

可以使用逻辑运算符:-a-o ! (与、或、非)

if [ -f $filename ]       中括号和里边的内容之间至少一个空格

[jcuan@localhostunix]$ if [ 1 ];then echo "hahahha"; fi

hahahha

[jcuan@localhostunix]$ if [ 0 ];then echo "hahahha"; fi

hahahha

因为写在一行,所以要用分号

注意!!中括号就是代表test!按照上边这么写是完全没有意义的

数值判断

-eq 数值1与数值2是否相等

-ne 数值1与数值2是否不相等

-gt 数值1是否大于数值2

-ge 数值1是否大于或等于数值2

-lt 数值1是否小于数值2

-le 数值1是否小于或等于数值2

字符串的比较  
=    字符串1与字符串2是否相同  
!= 字符串1与字符串2是否不相同  
-n    字符串是否包含字符(长度非0)  
-z    字符串是否为空串(长度为0)  
文件属性  
-r    文件file是否存在并且可读  
-w    文件file是否存在并可写
-s    文件file是否存在并且长度非0  
-f    文件file是否存在并且不是目录文件  
-d    文件file是否存在并且是一个目录文件


expr

用于计算表达式的值

只能是整数注意*、%需要转义

用于数字和非数字参数的关系运算符

如果是数字,则比较数值

如果是非数字的,则比较ASCII值

比较结果为真,expr显示1;结果为假,expr显示为0

关系运算符:等于(=)、不等于(!=)、小于(<)、小于等于(<=)、大于(>)、大于等于(>=)

示例:

[root@localhostmjliu]# expr Gabe = gabe

0

[root@localhostmjliu]# expr Gabe = Gabe

1

[root@localhostmjliu]# expr 5 < a

1


exit终止shell程序的执行

格式:exit n            #n是退出状态(返回码),如果没有n,则返回执行的最后一条命令的退出值


结构

if [ 表达式]

then 命令表

fi


if [ 表达式1]

then命令表1

elif [ 表达式2]

then命令表2

else 命令表3

fi


case 只能检测字符串变量

case 值in

模式1)
    命令1;;

模式2)
    命令2;;

模式3)
    命令3;;

esac

最后一个模式常写为字符*表示所有其它模式


for变量

in 变量列表

do
    命令

done


while[ 条件]

do
    命令

done


break语句

从包含该语句的最近一层循环中跳出一层, break n 则跳出n层;


函数

函数在调用前必须先定义,即在顺序上函数说明必须放在调用程序的前面。

调用程序可传递参数给函数,函数可用return语句把运行结果返回给调用程序。

函数只在当前shell中起作用,不能输出到子shell中


函数格式:

function_name( )

{

command1

……

commandn

}

函数调用格式:

function_name arg1 arg2 …


shell调试

格式:bash [-nvx] scripts

-n:不执行脚本,查询脚本内的语法,若有错误则列出

-v:在执行脚本之前,先将脚本的内容显示在屏幕上

-x:将用到的脚本内容显示在屏幕上,与-v稍微不同


原文地址:https://www.cnblogs.com/jcuan/p/5558464.html