Linux Shell编程基本知识

Shell是Linux提供的一种脚本语言,可以完成部分编程操作。从根本上讲Shell仅仅是一个命令解释器,而Shell脚本也就是一个由命令和一些简单的逻辑判断的堆砌。

所以说学好Shell脚本最重要的因素就是熟悉基本命令的使用。并掌握一些Shell逻辑判断的语句。

写一个shell脚本首先要声明shebang,也就是:

  #!/bin/bash

由于Shell可能涉及的东西比较多,我这里只给大家列出来一些常用的东西:

1.命令执行状态结果: #判断语句的关键  0        #执行成功  1-255    #执行失败  2.shell中的引用:         ``    #tab键上的那个点,引用命令的执行结果;等于$()    ‘‘    #单引号,强引用,变量不会替换    ""    #双引号,弱引用,变量会替换    3.变量赋值及引用:    赋值:变量名="值"   #引号平时可以不加,但是如果值有空白必须要加;建议加上    引用:$变量名  或者 ${变量名}  #花括号的意义是为了避免变量名后面有字符,导致变量引用出现错误,例如:        [[email protected] tmp]# a=good        [[email protected] tmp]# echo "we are $abye"         we are         [[email protected] tmp]#     #看见了吗?此时引用的不是a,而成了abye,此时{}就派上了用场:        [[email protected] tmp]# echo "we are ${a}bye"         we are goodbye        [[email protected] tmp]#     ##############懂了吗?########################    4.自定义脚本退出码:    exit [0-255]   0为成功,1-255失败  #声明一下:  #   脚本执行后的状态码,取决于最后执行的命令成功与否;

5.位置参数:  $1/$2...  #脚本的第一个参数,第二个参数  [email protected]        #脚本的所有参数  @#        #统计脚本参数的个数  6.shell中的逻辑与和逻辑或:  &&    代表与; #与运算:真&&真=真、真&&假=假、假&&真=假、假&&假=假  ||    代表或; #或运算:假&&假=假、真&&假=真、假&&真=真、真&&真=真

条件判断:

1.单分支条件判断语句: if 条件; then   语句;    #如果条件判断成功(状态码为0),那么就执行此语句 fi 2.双分支条件判断语句:  if 条件; then    语句1;   #如果条件判断成功(状态码为0),那么就执行此语句  else    语句2;   #如果条件判断失败(状态码为0-255),那么就执行此语句  fi  3.多分支条件判断语句:    if 条件1; then       语句1;        #如果条件判断成功(状态码为0),那么就执行此语句    elif 条件2; then #如果第一个条件判断失败,则进行此判断         语句2;      #如果条件判断成功(状态码为0),那么就执行此语句    elif ...;then         语句n;    else                      语句x;      #如果上面的条件判断失败,那么就执行    fi

for循环:

for i in list; do   循环体;done# for是一个列表循环类型,list为一个列表,将i依次赋值给这个列表的数据,直到列表循环完成。生成列表的方式有很多种:#  1.放多个数据空格分开,例如 for i in 1 2 3 4; do 意义就是把i依次赋值给这个列表(1,2,3,4)并循环。直到列表循环结束(这里为4次)#  2.使用{1..100}生成数字列表。意义是循环100次#  3.使用$(seq 100)生成数字列表。等同于{1..100}

条件测试:

#条件测试使用test EXPRESSION、[ EXPRESSION ]、[[ EXPRESSION ]]符号进行。

1.整数测试:
   #下面的都是双目测试
    -eq  #等于
    -ne  #不等于
    -lt  #小于
    -gt  #大于
    -le  #小于等于
    -ge  #大于等于

2.字符测试:
   #下面的都是双目测试:
        ==     #测试字符串是否相等
        !=     #测试字符串是否不等
        =~     #左侧是字符串,右侧是一个模式;判定左侧的字符串能否被右侧的模式所匹配;只能在[[ xxx =~ x ]]中使用
   #下面的都是单目测试:
        -n     #测试字符串是否不为空
        -z     #测试字符串是否为空

3.文件测试:
    #下面的都是单目测试:
        -e     #测试是否存在;等于-a
        -f     #测试是否为普通文件
        -d     #测试是否为目录文件
        -S     #测试是否为socket文件
        -p     #测试是否为命名管道文件
        -h     #测试是否为链接文件; 等于-L
        -b     #测试是否为块设备文件;
        -c     #测试是否为字符设备文件
        
        -r     #测试是否可读
        -w     #测试是否可写
        -x     #测试是否可执行
        
        -s     #测试文件是否为空
shift替换;  #替换的意义是用来踢掉位置参数

while循环:

while 条件; do
      循环体;
done
#while循环是一个条件判断循环,如果条件满足就开始循环,不满足则退出循环;在while循环应该定一个变量,变量随着while循环发生变化,直到满足退出条件;

while :; do
      循环体;
done
#这个while循环是一个无限循环,直到主动退出;

until循环:

until 条件;do

循环体;

done

#Until循环和while循环正好相反,如果不满足条件就开始循环,满足则退出;

待补充。

时间: 2024-12-21 20:06:36

Linux Shell编程基本知识的相关文章

Linux Shell编程之二选择结构

Shell编程学习之二 一.bash的条件测试 测试方法或者说测试书写: test EXPR [ EXPR ] [[ EXPR ]] 例如:测试变量 User_Name 的之是否为root test $User_Name="root" [ $User_Name == "root" ] [[ $User_Name == "root" ] 根据比较时操作数的类型,测试类型分为: 测试类型 运算符 运算符所代表的意义 示例 整形测试 -gt -lt -

Linux Shell 编程实战技巧

目前,越来越多的企业应用会部署在 Linux 系统上的,而 Linux Shell 脚本可以极大地帮助我们完成这些应用的运维任务.这使得 Linux Shell 开发技能成为开发人员的一项重要的.有竞争力的技能.本文就笔者的实际开发经验,以 Korn Shell 为例分享了脚本开发中的常见问题及相关技巧. 避免定时任务脚本的常见问题 很多脚本在实际使用的时候往往是以定时任务的方式运行,而非手工运行.但是实现同样功能的脚本在这两种运行方式下可能遇到的问题不尽相同. 以定时任务方式运行的脚本往往会遇

Linux Shell编程之五字符串的处理

shell编程之字符串处理 在 shell 中,由于是一种弱类型的语言,在没有事先申明变量类型的情况下,所有的变量都是字符串.所以对字符串的处理就显得相当重要了. 下面介绍常见的对字符串处理的操作. 一.字符串切片 ${string_var:offest:length},类似于数组元素的提取. # 这里的string_var是一个变量,offest 是字符串的开始偏移量,length是切去字符串的长度 var=dhcpd:x:177:177:DHCP server:/:/sbin/nologin

关于linux shell编程,alias rm='cp [email protected] ~/backup; rm [email protected]'

书上的这个例子需要在ubuntu的低版本的系统才支持,现在基本上都不支持了,想实现也很简单自己写一个脚本先备份再删除. alias也只是做了一次替换alias rm='cp [email protected] ~/backup; rm [email protected]' rm text.txt被转换成了cp  [email protected] ~/backup; rm [email protected] text.txt即cp  ~/backup; rm  text.txt可以看到text.

[转] - Linux网络编程 -- 网络知识介绍

(一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端         网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户端        在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序. 比如我们使用ftp程序从另外一        个地方获取文件的时候,是我们的ftp程序主动同外面进行通信(获取文件), 所以这个地方我们的ftp程序就是客户端程序. 服务端        和客户端相

Linux Shell编程基础---国际象棋棋盘

这两天在学习一些shell编程的知识,在做到一道国际象棋的题目时,觉得有些意思,就将它写成博客. 先来看看国际象棋棋盘长啥样: 仔细想了会棋盘的分布规则,这个问题肯定有很多思路,我自己想到的是规则是1.将棋盘行数作为一个大循环,循环8次,每次循环根据行号的奇偶来确定格子颜色的次序:2.在单个行中,循环8次并判断列的奇偶数来确定打印颜色以上思路能够打印出最简单的棋盘,但是shell中一个空格的显示形状并非正方形,而且是空格的高度大于宽度.因此需要在单个棋盘的行的打印循环外在加一层控制打印空格行数的

京峰Linux Shell编程从入门到精通

课程介绍:Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令并把它送入内核去执行. -------------------课程目录------------------- <Shell编程从入门到精通> ├1.linux下shell编程基础入门_(new).mp4├2.Shell编程之变量及LAMP导航菜单编写_(new).mp4├3.Shell编程之IF条件语句各种案例演练_(new).mp4├4.使用if条件语句编写MySQL备份脚本_(new).mp4

linux下shell编程基础知识

1.history    记录历史命令: 预设记录1000条命令,存储在用户家目录 .bash_history 文件中: !!     执行上一条命令 !n    n为数字,history里面显示的指令数字 !cat    执行最近一次以cat开头的命令 !$    上一条命令的最后一个参数 man builtin    可以查询系统内置的所有命令: 2.指令和文件名补全 Tab键    连续按2次列出所有的指令或文件名: 3.别名alias 自定义别名,把很长的经常使用的命令别名一个简单的命令

linux shell编程

1.什么是shell 2. 还是hello world程序 3. shell中的变量 3.1 系统变量 3.2 用户定义变量 3.2.1 用户定义变量规则 3.2.3 shell如何使用变量 3.2.3 全局变量 vs 局部变量 4. shell编程中的控制结构 4.1 条件判定 4.1.1 简单条件判定 4.1.2 组合判定 4.2  if - else 4.3 for 4.4 while 4.5 case 5. shell中的函数 5.1 函数声明和定义 5.2 函数调用 6. shell脚