zoukankan      html  css  js  c++  java
  • 三、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
  • 相关阅读:
    hdu 4521 小明系列问题——小明序列(线段树 or DP)
    hdu 1115 Lifting the Stone
    hdu 5476 Explore Track of Point(2015上海网络赛)
    Codeforces 527C Glass Carving
    hdu 4414 Finding crosses
    LA 5135 Mining Your Own Business
    uva 11324 The Largest Clique
    hdu 4288 Coder
    PowerShell随笔3 ---别名
    PowerShell随笔2---初始命令
  • 原文地址:https://www.cnblogs.com/chinas/p/5557741.html
Copyright © 2011-2022 走看看