• 三、Shell变量类型和运算符


    一、Shell变量的应用
    1、Shell变量的种类
        ·用户自定义变量:由用户自己定义、修改和使用
        ·预定义变量:Bash预定义的特殊变量,不能直接修改
        ·位置变量:通过命令行给程序传递执行参数
    2、变量的赋值与引用
        ·定义新的变量
                变量名要以英文字母或下划线开头,区分大小写
                格式:变量名=变量值
       · 查看变量的值
                格式:echo $变量名
            echo  "my name is $name"
            echo  "my name is ${name}bd"
     
         ·从键盘输入内容为变量赋值
                格式: read [-p "信息"] 变量名
         ·结合不同的引号为变量赋值
                双引号“”:允许通过$符号引用其他变量值
                单引号‘’:禁止引用其他变量值,$视为普通字符
                反撇号··:将命令执行的结果输出给变量
        注意:默认单、双引号里都不能解析转义字符(如/n)的
    例子A:
    [root@Salve]# cat demo.sh
    #!/bin/bash
    read -p "enter you name:" name
    echo "my name is $name"
     
    [root@Salve]#./demo.sh
    enter you name:Tom
    my name is Tom
    例子B:
    [root@Salve]# cat demo.sh
    #!/bin/bash
    read -p "enter you name:" name
    echo 'my name is $name'
     
    [root@Salve]# sh demo.sh
    enter you name:user44
    my name is $name
    例子C:
    [root@Salve]# cat demo.sh
    #!/bin/bash
    read -p "enter you name:" name
    echo 'my name is' $name
     
    [root@Salve]#./demo.sh
    enter you name:user55
    my name is user55
    例子D:
    [root@Salve]# cat demo.sh
    #!/bin/bash
    read -p "enter you name:" name
    echo '$name /n $name /n $name'
    echo "$name /n $name /n $name"
     
    [root@Salve]# sh demo.sh
    enter you name:user
    $name /n $name /n $name
    user /n user /n user
    例子E:
    [root@Salve scripts]# cat test.sh
    #!/bin/bash
    str1=`echo 123`
    str2=`date`
    echo $str1;
    echo "today is: $str2";
    echo "today is: $str2!!!";
    [root@Salve scripts]#./test.sh
    123
    today is:2016年05月24日星期二21:30:17 CST
    today is: 2016年 05月 24日 星期二 21:30:17 CST!!!
     
    vim编辑文件小技巧:
    ESC键后
        :set nu可以设置显示行号;
        :set nonu可以设置行号消失
     
    3、删除变量
        ·清除用户定义的变量
                格式:unset    变量名
    例子:
    [root@Salve]# cat test.sh
    #!/bin/bash
    #test.sh
    name='user123'
    echo $name
     
    unset name
    echo $name
    [root@Salve]# sh test.sh
    user123
        注意:第二行为空
     
    5、位置变量
        ·表示为$n,n为1~9之间的数字
    [root@Salve scripts]# cat demo.sh
    #!/bin/bash
     
    echo $1
    echo $2
    echo $3
    echo $4
    echo $5
    echo $6
    echo $7
    echo $8
    echo $9
    echo $10
    [root@Salve scripts]#./demo.sh a b c d e f g h i j
    a
    b
    c
    d
    e
    f
    g
    h
    i
    a0
     
    例子:
    [root@Salve scripts]# cat demo.sh
    #!/bin/bash
     
    case $1 in
    start)
    echo 'start...'
    ;;
    stop)
    echo 'stop...'
    ;;
    esac
    [root@Salve scripts]#./demo.sh start
    start...
    [root@Salve scripts]#./demo.sh stop
    stop...
    4、预定义变量
        ·表示形式如下:
                $#:命令行中位置参数的个数
                $*:所有位置参数的内容
                $?:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出错
                $0:当前执行的进程/程序名
    例子A:$0显示当前脚本的名称
    [root@Salve scripts]# cat a.sh
    #!/bin/bash
    echo "当前您正在执行的脚本名称是:"$0
    echo $0
    echo $0
    [root@Salve scripts]#./a.sh
    当前您正在执行的脚本名称是:./a.sh
    ./a.sh
    ./a.sh
    例子B:
    [root@Salve scripts]# cat a.sh
    #!/bin/bash
    echo "总共有${#}个参数"
    echo "参数的内容是:$*"
    [root@Salve scripts]#./a.sh a b c d e f g h i j k l m n o p q
    总共有17个参数
    参数的内容是:a b c d e f g h i j k l m n o p q

    例子C:

    [root@Salve scripts]# cat b.sh
    #!/bin/bash
     
    for i in$*;do
        echo $i
    done
    [root@Salve scripts]#./b.sh a b c
    a
    b
    c
    例子D:
    [root@Salve scripts]# cat test.sh
    #!/bin/bash
    tot=0
    for i in $*;do
        tot=$(($tot+$i))
    done
    echo $tot
     
    [root@Salve scripts]#./test.sh 12345
    15
    例子E:
    [root@Salve scripts]# cat temp.sh
    #!/bin/bash 
    ls -l
    echo $?
     
    [root@Salve scripts]#./temp.sh
    总用量8
    -rwxr-xr-x.1 root root 285月2414:31 temp.sh
    -rwxr-xr-x.1 root root 695月2414:27 test.sh
    0
    例子F:
    [root@Salve scripts]# cat temp.sh
    #!/bin/bash
    #ll
    ls
     
    if[[$?==0]];then
        echo '上一条命令执行成功'
    else
        echo '上一条命令执行失败'
    fi
    [root@Salve scripts]#./temp.sh
    temp.sh test.sh
    上一条命令执行成功
     
    6、计算整数表达式的运算结果
        格式:expr 变量1 运算符 变量2 ...[运算符 变量n]
    expr的常用运算符(现在较少用,用简单的方法)
            加法运算:+
            减法运算:-
            乘法运算:*
            除法运算:/
            求模(取余)运算:%

    [root@Salve scripts]# cat a.sh
    #!/bin/bash
     
    expr 10+20
    expr $1 + $2
    num=`expr 1+2`
    echo $num
     
    [root@Salve scripts]#./a.sh 1155
    30
    66
    3
    现在更常用的是如下方法:
    [root@Salve scripts]# cat a.sh
    #!/bin/bash
     
    num1=$((4+2))
    num2=$((4-2))
    num3=$((4*2))
    num4=$((4/2))
    num5=$((4%2))
    echo $num1
    echo $num2
    echo $num3
    echo $num4
    echo $num5
    [root@Salve scripts]#./a.sh
    6
    2
    8
    2
    0
  • 相关阅读:
    python之map,filter
    python函数的闭包
    Hibernate查询对象的方法浅析
    底部浮动
    DataGrid-自定义排序
    DataGrid-1
    Alert
    2014-01-04 SQL练习
    proguard-gui 混淆代码简要笔记
    vim利用coc补全的配置过程
  • 原文地址:https://www.cnblogs.com/chinas/p/5557741.html
Copyright © 2020-2023  润新知