Linux shell script基础学习
来源:互联网 发布:樱井知香怎么喷那么多 编辑:程序博客网 时间:2024/05/16 11:39
前言:最近再看鸟哥的Linux私房菜,这本书内容很多,很厚,看的时候,可以挑着看。我就是挑着看的,只看了第三部分,主要讲的是shell和shell script,还有正则表达式等比较重要的内容。
shell script:就是利用shell的功能写一个“程序”(program),这个程序是使用纯文本文件,将一些shell的语法和命令写在里面,搭配一些正则表达式、pip命令与数据流定向等功能,以达到我们想要的处理目的。
至于为什么要学shell script,原因太多了。。。
第一个shell script的编写与执行
shell script编写过程中,我们需要注意一些问题,下面我将列出来
1命令的执行是自动从上到下、从左到右的分析与执行2命令的执行:命令、参数间的多个空格都会被忽略掉3空白行也会被忽略掉,并且tap键所得的空白同样也视为空格键4如果读到了一个enter符号,就开始尝试执行该行命令5至于如果一行内容太多,则可以使用“\[Enter]"来扩展下一行6”#“可作为批注。任何加在#后面的内容都会被视作批注文字而被忽略#!/bin/bash 2 #progam: 3 # This programs shows "Hello World!" in your screen. 4 #history: 5 #2017/07/27 zhangguyuan 6 read -p "please input yourname:" firstname 7 echo " yourname is:$firstname" 8 exit 0
可以看下这个简单的shell script,有以下几点需要说明一下:
1、第一行#!/bin/bash声明这个script使用的shell名称
因为我们使用的是bash,所以必须以#!/bin/bash来声明这个文件内的语法使用bash的语法
2、程序内容的说明
整个shell script中,除了第一行的#!是来声明shell的之外,其他的#都是批注
3、主要程序部分
在这个程序中就是echo那一行
编写shell script的好习惯
如果其他任何一种编程语言,都需要养成良好的编程习惯,便于我们后期程序的维护
一个好的shell script应该包含一下信息:
1、script的功能
2、script的版本信息
3、script的作者和联络方式
4、script的版权声明方式
5、script的history
6、script内比较特殊的命令,使用”绝对路径“的方式执行
7、script执行所需要的环境变量预先声明与设置
===================================================================================================
简单的shell script练习
1、我们首先来看一个简单的范例吧:
#!/bin/bash 2 #program: 3 # user input 2 integer numbers;program will cross these two numbers. 4 echo "you should input 2 integer numbers,i will cross them\n" 5 read -p "first number:" firstnu 6 read -p "second number:" secnu 7 total=$(($firstnu+$secnu)) 8 echo "\n the result of $firstnum $secondnum is $total" 9
read -p允许用户输入数据保存在变量里面,total是两着的计算结果
2、利用test命令的测试功能(亲测比较好用)
当我要检测系统上面某些文件或者是相关属性时,利用test这个命令来工作真是好用得不得了,举例来说,我要检查/dmtsai是否存在时使用:
test -e /dmtsai && echo "exist" || echo "not exist"如果当前目录下存在dmtsai这个文件,则会显示exist,否则not exist
3、利用判断符号[]
除了使用我喜欢的test之外,其实我们还可以利用判断符号"[]"来进行数据的判断,举例来说,我们想要知道$HOME这个变量是否为空的时候,可以这样做:
[ -z "$HOME" ]; echo $?使用中括号的时候必须要特别注意,这个问题我开始使用的时候,找了好久的errors,直接无语死了,shell script的语法比其他的编程语言要更加严格,有点和golang类似严格。因为中括号要用到很多地方,包括通配符与正则表达式等。如果要在bash的语法中使用中括号作为shell的判断句,必须要注意中括号的两端需要有空格符来分隔。假设我使用0来表示空格键,那么这些地方需要使用空格键。举个例子:
[0"$HOME"0=0"$MAIL"0]
4、条件判断
*单层、简单的条件判断
if [条件判断式]; then条件成立,可以进行的工作内容fi<===结束if的意思
举个例子:
1 #!/bin/bash 2 read -p "please input (y/n)" yn 3 if [ "$yn" = "Y" ] || [ "$yn" = "y" ] ; then 4 echo "ok,continue" 5 exit 0 6 fi 7 if [ "$yn" = "N" ] || [ "$yn" = "n" ] ; then 8 echo "no,interrupt" 9 exit 0 10 fi 11 echo "i dont know what your choice is" && exit 0*多重、复杂条件判断
if [ 条件判断式 ]; then条件成立,执行的工作else条件成立执行的工作fi
if [ 条件1 ]; then条件1成立执行的工作elif [ 条件2 ]; then条件2成立执行的工作else 当1、2都不成立的时候,执行的工作fi5、利用case...esac判断
case $变量名字 in 《==关键字case,还有变量前的$ "第一个变量内容”) 程序段 ;; 《==每个类型结尾使用两个分号结束来处理 "第二个变量内容“) 程序段 ;; esac 《==最后的case结尾举个例子
#!/bin/bash 2 case $1 in 3 "hello" ) 4 echo "hello,how are you" 5 ;; 6 "") 7 echo "you must ,ex> {$0 someword}" 8 ;; 9 *) 10 echo "usage $0 {hello}" 11 ;; 12 esac
6、利用function功能
什么是函数呢?简单的说,function可以在shell script当中做出一个类似自定义的执行命令的东西,最大的功能就是帮我们简化很多的程序代码function的语法如下:
function fname(){}但是有一点需要说明的是,这种语法在ubtun14.0版本上是会errors的,正确的需要去掉function,就ok。
举个例子
#!/bin/bash 2 printit () { 3 echo "your choice is $1" 4 } 5 6 case $1 in 7 "one") 8 printit 1 9 ;; 10 "two") 11 printit 2 12 ;; 13 "three") 14 printit 3 15 ;; 16 * ) 17 echo "usage $0 {one|two|three}" 18 ;; 19 esac~ ~
-------------------------------------------------------------------------------更新-------------------------------------------------
7、循环
1、while do done,until do done
一般来说,不定循环最常见的就是下面的这两种状态
while [ contion ]do 程序段落done
until [ contion ]do 程序段落done
for var in con1 con2 con3do 程序段落done
for ( (初始值;限制值;执行步长) )do 程序段落done
- Linux shell script基础学习
- Linux shell script学习
- Linux的Shell Script学习
- Linux学习记录--shell script
- Linux学习之shell script
- Linux shell编程 14 ---- 学习shell script
- linux基础之Shell Script入门介绍
- linux基础之Shell Script入门介绍
- Linux学习笔记之:学习Shell Script
- Linux shell script学习笔记一
- Linux重新学习--shell script--控制结构
- Linux重新学习--shell script--函数
- Linux学习笔记(9)----shell script
- linux下shell script学习(一)
- linux下shell script学习(二)
- Linux学习-shell script 的默认变量
- Linux 学习笔记 -- 第三部分 学习 shell 与 shell script -- 第13章 学习 shell script
- 【鸟哥的linux私房菜-学习笔记】Shell script基础
- log4j 的使用详解
- PHP 和 AJAX MySQL 数据库实例
- js中Object常用方法和属性
- MySQL优化所调整的10项配置
- 使用Spring连接数据库,配置JSP json数据
- Linux shell script基础学习
- JS学习-Map和Set
- 8月8 某公司一面
- leetcode--Invert Binary Tree
- 3D控件Aspose.3D 8月新版V17.8发布 | 支持6面多维地图
- 读取win或linux绝对路径下的属性文件
- 【Linux】Linux中常用操作命令
- iOS开发
- Linux使用Wine安装腾讯TIM