Linux Shell编程

简介

Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Bourne Again Shell,由于易用和免费,Bash在日常工作中被广泛使用。同时,Bash也是大多数Linux系统默认的Shell。

详解

1.shell变量

  • 变量名和等号之间不能有空格;

  • 除了显式地直接赋值,还可以用语句给变量赋值,如:


    for file in `ls /etc`

  • 推荐给所有变量加上花括号,这是个好的编程习惯,以免出现引用变量varible时出现$varible123引起混淆的情况;

  • 使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变,如:

    myUrl="http://www.w3cschool.cc"
    readonly myUrl
  • 使用 unset 命令可以删除变量,语法为:unset 变量名

  • 字符串是shell编程中最常用最有用的数据类型,字符串可以用单引号,也可以用双引号,也可以不用引号。

    – 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
    – 单引号字串中不能出现单引号(对单引号使用转义符后也不行);

    – 双引号里可以有变量
    – 双引号里可以出现转义字符

  • 双引号中可以拼接字符串,如:

    your_name="world"
    greeting="hello, "$your_name" !"
    greeting_1="hello, ${your_name} !"
    echo $greeting $greeting_1 #均输出hello world !
  • 字符串长度获取:

    string="abcd"
    echo ${#string} #输出 4
  • 字符串截取:

    string="runoob is a great site"
    echo ${string:1:4} # 输出 unoo
  • 查找字串位置:

    string="runoob is a great company"
    echo `expr index "$string" is`  # 输出 8
  • bash支持一维数组(不支持多维数组),并且没有限定数组的大小,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。

    可以不使用连续的下标,而且下标的范围没有限制。

    在Shell中,用括号来表示数组,数组元素用”空格”或换行符号分割开

  • 读取数组指定下标的元素值:

    ${数组名[下标]}
  • 获取数组所有元素:

    ${array_name[@]}
  • 获取数组的长度:

    
    # 取得数组元素的个数
    
    length=${
         #array_name[@]}
    
    # 或者
    
    length=${
         #array_name[*]}
    
    # 取得数组单个元素的长度
    
    lengthn=${
         #array_name[n]}

2.shell参数传递

  • 可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$nn 代表一个数字,0代表脚本文件名,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推…

    如test.sh:

    
    #!/bin/bash
    
    
    echo "Shell 传递参数实例!";
    echo "执行的文件名:$0";
    echo "第一个参数为:$1";
    echo "第二个参数为:$2";
    echo "第三个参数为:$3";

    执行./test.sh 1 world reference,输出内容为:

    执行的文件名:./test.sh
    第一个参数为:1
    第二个参数为:world
    第三个参数为:reference
  • 几个用于处理传递参数的字符含义:

    $#   传递到脚本的参数个数
    $*   以一个单字符串显示所有向脚本传递的参数。
    如"$*"用「"」括起来的情况、以"$1 $2$n"的形式输出所有参数,整体做为一个字符串回显。
    $$  脚本运行的当前进程ID号
    $!   后台运行的最后一个进程的ID号
    $@   与$*相同,但是使用时加引号,并在引号中返回每个参数。
    如"$@"用「"」括起来的情况、以"$1" "$2""$n" 的形式输出所有参数,每个参数做为单独的字符串回显。
    $-   显示Shell使用的当前选项,与set命令功能相同。
    $?   显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误

3.shell运算符

原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。

如:

#!/bin/bash
a=3
b=5
cc=`expr $a 
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值