shell编程的收获与感悟(5分钟搞懂shell编程)

【写在最前】我们在平时的编程学习中,或多或少,或早或晚,都要接触到Linux服务器;熟练掌握Shell编程技术,是从小白变大牛的必经之路!通过本文知识,让我们花5分钟时间彻底搞懂shell编程,相信聪明的你,看完一定会有收获!

shell编程的收获与感悟(5分钟搞懂shell编程)(1)

【正文开始】

什么是shell?Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Shell 种类有很多,最常用的的是:Bourne Again Shell(即:/bin/bash,基本等同 /bin/sh),它非常易用且完全免费,是大多数Linux 系统默认的 Shell大家常见的shell脚本的第一行内容是: #!/bin/bash这一句就是告诉系统需要使用 /bin/bash 脚本解释器来执行。

编写第一个shell脚本实例: vim test.sh

然后输入:

#!/bin/bashecho "Hello World !"

# 运行 Shell 脚本的两种方法:1、作为可执行程序chmod x ./test.sh #使脚本具有执行权限./test.sh #直接执行脚本(./不可省略,表示在当前目录查找,否则默认去环境变量PATH里找) 2、作为解释器参数例1: /bin/sh test.sh例2: /bin/php test.php这种方式运行的脚本,不需要在第一行指定解释器信息(写了也没用)

# shell的注释单行注释: #多行注释:

<<EOF (不常用)注释内容...注释内容...注释内容...EOF

# 变量操作定义:str=abcd

注意: 变量名str和等号之间不能有空格(否则报错:变量名未找到命令),不能有特殊符号(?*),不能以数字开头(可以使用下划线和大写)

使用:${变量名} (大括号虽然是可选的,但是推荐用)(有利于区分边界,防止意外情况)

只读: readonly 变量名 (没有大括号)删除: unset 变量名 (删除后不能再用,不能删除只读变量)

# 字符串操作str="abcd"取长:echo ${#str} # 输出 4截取: echo ${str:1:5} # 输出 bcd(不会报越界)拼接:echo ${str}'abc' # 输出 abcabc查找:echo `expr index "$str" cd` # 输出3(注意必须是反引号)

判空:if test $str # 等价于 if [ $str ]

判等:if test $str = "abcd" # 等价于 if [ $str = "abcd" ]

# 数组操作共3种定义方式:1)array_name=(value0 value1 value2 value3)2)array_name=(value0value1value2value3)3)array_name[0]=value0array_name[1]=value1array_name[n]=valuen读取数组: valuen=${array_name[n]}获取数组所有元素:echo ${array_name[@]}获取数组长度: length=${#array_name[@]}

# 自定义函数的实现

定义:func1(){echo "第一个参数为 $1 !"echo "第二个参数为 $2 !" }调用: func1 p1 p2

# 条件的处理if condition1thencommand1elif condition2 then command2elsecommandNfi

# 循环的处理1)for的写法for var in item1 item2 ... itemNdo...done

一个例子:for loop in 1 2 3 4 5doecho "The value is: $loop"done

2)while 的写法

int=1while(( $int<=5 ))doecho $intlet "int "done

## 文件测试运算符操作符 说明 举例-e 检测文件(包括目录)是否存在-d 检测文件是否是目录-r 检测文件是否可读-w 检测文件是否可写-x 检测文件是否可执行-s 检测文件是否为空(文件大小是否大于0),不为空返回 true-b 检测文件是否是块设备文件, -c 检测文件是否是字符设备文件-p 检测文件是否是管道文件-l 检测文件是否存在并且是一个符号链接。-f 检测文件是否是普通文件(既不是目录,也不是设备文件)-g 检测文件是否设置了 SGID 位-u 检测文件是否设置了 SUID 位-k 检测文件是否设置了粘着位(Sticky Bit) -S: 检测某文件是否是 socket。

一个示例:file="test.sh"if test -r $filethenecho "文件可读"elseecho "文件不可读"fi

【全文完】--------------------------------十年技术沉淀,只做原创文章;及时关注作者,成就大牛之路!如果您对文章内容有不同意见或独到见解,欢迎大家在评论区留言讨论,作者也会第一时间进行互动回复。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页