zoukankan      html  css  js  c++  java
  • shell编程基础

    1.cat /etc/shells #查看系统中安装的 shell

    2.eg1.

    #!/bin/bash

    echo "Hello World !"

    3.Shell 脚本的执行:

    chmod +x ./hello.sh   #使脚本具有执行权限

    ./hello.sh    #执行脚本

    /bin/sh /root/hello.sh #作为解释器参数运行,不需要在第一行指定解释器信息(shell种类),写了也不生效

    简写为sh /root/hello.sh

    4.shell变量定义和引用:

    your_name="itcast  .  cn" #变量名和等号之间不能有空格

    echo $your_name

    echo ${your_name}

    变量名的命名须遵循如下规则:
    l 首个字符必须为字母( a-z, A-Z)
    l 中间不能有空格,可以使用下划线( _)
    l 不能使用标点符号
    l 不能使用 bash 里的关键字(可用 help 命令查看保留关键字)

    readonly variable_name 只读

    unset variable_name 删除

    5.变量类型:

    局部变量、环境变量(set #查看当前环境变量)、shell变量(shell 程序设置的特殊变量)。

    6.参数传递:

    在执行 Shell 脚本时, 可以向脚本传递参数。
    脚本内获取参数的格式为: $n n 代表一个数字, 1 为执行脚本的第一个参
    数, 2 为执行脚本的第二个参数,以此类推…… $0 表示当前脚本名称

    eg.  ./test.sh 1 2 3

    注:特殊字符:

    $#

    传递到脚本的参数个数

    $*

    以一个单字符串显示所有向脚本传递的参数。

    $$

    脚本运行的当前进程 ID

    $!

    后台运行的最后一个进程的 ID

    $@

    $*相同,但是使用时加引号,并在引号中返回每个参数。

    $?

    显示最后命令的退出状态。 0 表示没有错误,其他任何值表明有错误。

    7.$*$@区别

    相同点: 都表示传递给脚本的所有参数。
    不同点:
    不被" "包含时, $*$@都以$1 $2… $n 的形式组成参数列表。
    " "包含时, "$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式组成一个整串; "$@" 会将各个参数分开,以"$1" "$2" … "$n" 形式组成一个参数列表。

    8.Shell 运算符

    支持包括:算术、关系、 布尔、字符串等运算符。 原生 bash 不支持简单的数学运算,但是可以通过其他命令来实现。

    eg.   echo `expr $a + $b`  

    echo `expr $b - $a` 

    echo `expr $a * $b` 

    echo `expr $b / $a`

    此外,还可以通过(()) $[]进行算术运算。

    count=1

    ((count++))

    echo $count

    a=$((1+2))

    a=$[1+2]

    9.流程控制:

     (1)if判断:-eq, -nq, -gt, -lt, -ge, -le

    (2)for循环:注:for(())后面的分号,可省略。

    (3)while循环:

    (4)case分支:

    (5)函数:

      所有函数在使用前必须定义,这意味着必须将函数放在脚本开始部分。

      可以带 function fun()定义,也可以直接 fun() 定义,不带任何参数。

      参数返回,可以显示加 return ,如果不加,将以最后一条命令运行结
    果,作为返回值。 return 后跟数值 n(0-255)。

      当 n>=10 时,需要使用${n}来获取参数。

    示例见下图:
  • 相关阅读:
    flask_第一个程序
    Web框架_MVC vs MVT
    python_使用qrcode生成二维码
    HDU 4641
    SPOJ NSUBSTR
    SPOJ LCS2 多个串的最长公共子串
    SPOJ LCS 后缀自动机找最大公共子串
    POJ 1509 循环同构的最小表示法
    HDU 4821 字符串hash
    SPOJ GSS1 静态区间求解最大子段和
  • 原文地址:https://www.cnblogs.com/mediocreWorld/p/15185467.html
Copyright © 2011-2022 走看看