Linux的Bash变量

```

 1.1  用户自定义变量、 
 1.2  环境变量、 
 1.3  位置参数变量、 
 1.4  预定义变量、

```


    1.1 用户自定义变量、

    什么是变量?
        变量是计算机内存的单元,其中可以存放任何值,变量当中的内容:可以是数字、字母、文件名、
        一般是用变量来保存值的,使用变量保存信息、变量名等于变量值,
        使用shell时可以随着变量名的传递进行变量值调用。


    变量设置规则
        变量名称可以有字母、数字和下划线组成,但是不能以数字开头,

        在Bash中,变量的默认类型都是字符串行,如果要进行数值运算,则必须指定变量类型为数值型。
        变量用等号连接值,等号左右两侧不能有空格。如果变量的值有空格,必须使用单引号或双引号包括。
        在变量的值中,可以使用“\”转移符、让特殊符号失去作用。
        如果需要增加变量的值,可以进行变量值的叠加,不过变量需要用双引号包含
        "$变量名"或用${变量名}包含。
        如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令。
        [root@localhost~]# aa=$(date)
        [root@localhost~]# echo $name 
        显示当前的时间


    变量分类

        用户自定义变量
        环境变量:这种变量中主要保存的是和系统操作相关的数据。
        位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,
                      变量作用也是固定的。


    本地变量

        变量定义
            [root@localhost~]# name="liu he"

        变量叠加
            [root@localhost~]# aa=liuhe
            [root@localhost~]# echo $aa
            liuhe 
            [root@localhost~]# aa="$aa"456
            [root@localhost~]# echo $aa
            liuhe456
            [root@localhost~]# aa=${aa}789
            [root@localhost~]# echo $aa
            liuhe456789

        变量调用
            [root@localhost~]# echo $name 
            liu he 

        变量查看
            [root@localhost~]# set

        变量删除
            [root@localhost~]# unset name 




    1.2 环境变量

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


    设置环境变量
        export 变量名=变量值
        #申明为全局变量          
        export意思是说,把变量.申明为全局变量,让所有shell的子shell中都可以查看的到。

        [root@localhost~]# bash                    进入子shell
        [root@localhost~]# exit                    从子shell退回
        [root@localhost~]# pstree                  显示当前shell位置
        略过
        ├─sshd───sshd───bash───pstree

        [root@localhost~]# name=lh                         本地变量
        [root@localhost~]# export age=18                   环境变量
        [root@localhost~]# sex=male                        本地变量
        [root@localhost~]# export sex=male                 环境变量是在本地shell及子shell中生效
        [root@localhost~]# set                             能查看所有的变量、本地.预定义.环境
        [root@localhost~]# env                             专门来查看环境变量的
        [root@localhost~]# echo $age                       调用环境变量
        [root@localhost~]# unset age                       删除环境变量


    系统常见环境变量

        PATH: 系统查找命令的路径
        [root@localhost~]# echo $PATH
        PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:
        /sbin:/bin:/usr/sbin:/usr/bin:/root/bin

        [root@localhost~]# vi hello.sh                     新建执行脚本
        #!/bin/bash

        echo "hello world"

        [root@localhost~]# chmod 755 hello.sh              赋予执行权限
        [root@localhost~]# PATH="$PATH":/root/sh           使用变量叠加添加到PATH中"临时生效"
                                                           变量叠加

    PS1:定义系统提示符的变量

        \d: 显示日期, 格式为"星期 月 日"
        \h: 显示简写主机名, 如默认主机名"localhost"
        \t: 显示24小时制时间, 格式为"HH:MM:SS"
        \T: 显示12小时制时间, 格式为"HH:MM:SS"
        \A: 显示24小时制时间, 格式为"HH:MM"
        \u: 显示当前用户名
        \w: 显示当前所在目录的完整名称
        \W: 显示当前所在目录的最后一个目录
        \#: 执行的第几个命令
        \$: 提示符。如果是root用户会显示提示符为“#”,如果是普通用户会显示提示符为“$”

        [root@localhost~]# PS1='[\u@\t\w]\$ '
        [root@localhost~]#



    1.3 位置参数变量

    位置参数变量
         位置参数变量                             作用

            $n				n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要
                                        用大括号包含,如${10}

            $*				这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体

            $@				这个变量也代表命令行中所有的参数,不过$@$把每个参数区分对待

            $#                          这个变量代表命令行中所有的参数的个数


            [root@localhost~]# mkdir sh                        创建sh目录接收所有的脚本
            [root@localhost sh]# vi canshu1.sh                 #创建第一个参数脚本
            #!/bin/bash                                        #标称是shell脚本

            echo $0                                            #输出命令本身
            echo $1                                               
            echo $2
            echo $3

            [root@localhost sh]# chmod 755 canshu1.sh               给脚本赋予执行权限
            [root@localhost sh]# ./canshu1.sh                       不加任何参数
            ./canshu1.sh                                            只有$0有数据仅打印命令本身
                                                                    $123没有数据,
                                                                    打印的是空行

            [root@localhost sh]# canshu1.sh 11 22 33                11 22 33 作为脚本参数
            ./canshu1.sh
            11
            22
            33
            [root@localhost sh]# cat canshu1.sh
            #!/bin/bash

            echo $0							#$0代表命令本身
            echo $1							#$1用来接收后面输入的第一个参数
            echo $2							#$2用来接收后面输入的第二个参数
            echo $3							#$3用来接收后面输入的第三个参数
            这仅仅是位置参数变量的作用、   canshu1.sh用$0接收  11用$1接收  22$2 33$3    

            例子1:
                [root@localhost sh]# vi canshu1.sh 
                #!/bin/bash

                num1=$1                                            #写两个参数。把两个参数的值赋予变量
                num2=$2
                sum=$(( $num1+$num2 ))                             #要想数值运算必须加双小括号
                                                                   #定义sum 变量sum的和是num1加sum2
                echo $sum
                #打印变量sum的值


                [root@localhost sh]# cat canshu2.sh
                #!/bin/bash

                sum=$(( $1+$2 ))                                    #没有给用户提示这两个变量输入数字,否则这个脚本不能
                                                                    正确执行
                echo "sum is : $sum"                                而且这两个参数必须是数值、
                - - - - - - - - - - - - -
                [root@localhost sh]# chmod 755 canshu2.sh
                [root@localhost sh]# ./canshu2.sh 11 22
                sum is : 33


                $n 						    #就是把命令和命令后面跟的参数、传递给脚本中的$0--$数字代表的
                                                                    位置参数变量、最主要的作用是把命令行和命令的参数传递到脚本当中

            = = = = = = = = = = = = = 

            例子2:
                [root@localhost sh]# vi canshu3.sh
                #!/bin/bash

                echo "A total of $# parameters"					        #使用$#代表所有参数的个数
                echo "The parameters is:$*"						#使用$*代表所有的参数
                echo "The parameters is:$@"						#使用$@也代表所有参数

                [root@localhost sh]# chmod 755 canshu3.sh
                [root@localhost sh]# ./canshu3.sh 11 222 333 44 55 66
                6
                11 222 333 44 55 66
                11 222 333 44 55 66
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值