zoukankan      html  css  js  c++  java
  • shell编程之变量

    变量设置规则

    1、变量名称可以由字母、数字和下划线组成,但不能以数字开头;
    2、在Bash中,变量的默认类型是字符串,如果要进行数值运算,则必须指定变量类型为数值型;
    3、变量用等号连接值,等号左右两侧不能有空格;
    4、变量的值如果有空格,需要使用单引号或双引号包括;
    5、在变量的值中,可以使用“”转义符;
    6、如果需要增加变量的值,那么可以进行变量值的叠加,不过变量需要使用双引号包含“$变量名”或用${变量名}包含;

    7、如果把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令;

    8、环境变量名建议大写,便于区分。

    变量分类

    1、用户自定义变量
    2、环境变量
    3、位置参数变量:用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的
    4、预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用是固定的

    set 查看系统中所有的变量
    echo $name 调用变量
    unset name 删除变量,不带$

    执行set命令后,可看到PATH环境变量,即系统查找命令的路径

    环境变量

    用户自定义变量只在当前的shell中生效,而环境变量会在当前shell和这个shell的所有子shell当中生效。如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的shell中生效

    设置环境变量
    export 变量名=变量值 申明环境变量,声明后子shell就可以使用该变量
    env 查询变量
    unset 变量名 删除变量

    位置参数变量

    计算两个数之和的shell脚本:
    #!/bin/bash
    num1=$1
    num2=$2
    sum=$(($num1+$num2))
    echo $sum

     

    [root@192 test]# cat canshu2.sh 

    #!/bin/bash
    for i in "$*"
    do
    echo "The parameters is:$i"
    done

    x=1
    for j in "$@"
    do
    echo "The parameters is:$j"
    x=$(($x+1))
    done

    [root@192 test]# ./canshu2.sh 1 2 3 4 5 6
    The parameters is:1 2 3 4 5 6
    The parameters is:1
    The parameters is:2
    The parameters is:3
    The parameters is:4
    The parameters is:5
    The parameters is:6

    预定义变量

    $$ 当前脚本执行时,生成的进程的PID

    $!
    [root@192 test]# echo $?
    0
    [root@192 test]# sdfadsf
    -bash: sdfadsf: command not found
    [root@192 test]# echo $?
    127

    接收键盘输入

    read [选项] [变量名]

      -p 提示信息:在等待read输入时,输出提示信息
      -t 秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间
      -n 字符数:read命令只接受指定的字符数,就会执行,不用回车
      -s :隐藏输入的数据,保密
    [root@192 test]# cat read.sh
    #!/bin/bash
    read -t 30 -p "Please input your name:" name
    #提示输入姓名,等待30秒,将用户输入的值赋值给变量name
    echo "Input name is $name"
    read -s -t 30 -p "Please enter your age:" age
    #年龄是隐私,所以用-s选项隐藏输入
    echo "Enter age is $age"
    echo -e " "
    read -n 1 -t 30 -p "Please select your gender[M/F]:" gender
    #选择性别,接收一个字符后就执行,不用回车
    echo -e " "
    echo "Sex is $gender"

  • 相关阅读:
    边工作边刷题:70天一遍leetcode: day 35
    边工作边刷题:70天一遍leetcode: day 36
    边工作边刷题:70天一遍leetcode: day 37-2
    边工作边刷题:70天一遍leetcode: day 37
    边工作边刷题:70天一遍leetcode: day 37-1
    边工作边刷题:70天一遍leetcode: day 38-2
    边工作边刷题:70天一遍leetcode: day 38-1
    边工作边刷题:70天一遍leetcode: day 38
    边工作边刷题:70天一遍leetcode: day 38-2
    边工作边刷题:70天一遍leetcode: day 38-1
  • 原文地址:https://www.cnblogs.com/xyhero/p/9343635.html
Copyright © 2011-2022 走看看