bash的基础特性 数值运算 数值大小比较 环境变量 位置变量 正则表达式

变量类型:
数据存储格式,储存空间大小,参与变量种类
字符型
数值型:
整数型
浮点型
强类型的:定义变量时必须指定变量类型,参与运算必须符合类型要求。
弱类型的:定义变凉时无需指定类型,所有的全是字符型,参与运算会自动进行隐式类型转换。变量无需定义,可直接使用...
bash中的变量种类:
根据变量的生效范围等标准
本地变量:生效范围为当前shell的生命周期,对当前shell其他之外的shell和当前shell的子shell都不生效,重启也失效。
环境变量:生效范围为,当前shell进程和其子shell都生效。
局部变量:生效范围为当前shell的某代码片段(通常指定函数)
位置变量:类似于grep中 前面I() 后面使用 \1, \2...这样的表达式,$1 $2 .....来表示 用于让脚本在脚本代码中调用通过命令传递给他的参数...
特殊变量:$? $0 其中$0在脚本中使用的话 为输出脚本名称

本地变量:
    变量赋值: name=“vlove”
                可以使用引号
                    1)可以直接给与字符串 name=usermane,如果有空格加双引号
                    2)也可是使用变量的值: name=$name 也可以使用双引号
                    3)可以直接使用命令的值:name=$(COMMAND)
                            第三个引用了命令执行的结果.... 必须使用小括号 或者使用反引号
                            name=·(command)·
            变量引用  $name  $(name)
                            强引用:单引号 ‘ ’  所见如所得,输出字符串,如果字符串中有变量,也不会输出变量的值
                            弱引用:双引号,“” 如果双引号里面的变量,会先输出变量的值。。。

    查看系统定义的所有变量:set
    取消定义的变量 unset “name”

    环境变量:
    变量声明,赋值
    就是比本地变量的时候多了一个声明
                    声明可以使用 export,declare
                    export name=username 或者 declare -x name=username
        引用变量和本地变量是一样的
        查看环境变量 export
                                                            env
                                                            printenv 也可以把本地变量追加为环境变量 export Uname
    销毁变量 也是 unset name

    bash有许多内建的环境变量
                PATH SHELL UID HOME  等等

变量命名法则:
            1、不能使用程序中的保留字,如:if for等
            2、只能使用大小写字谜,下划线数字,但是不能使用数字开头
            3、见名知意  ,有些编程人员的坏习惯,随便复制随便起名,现在知道可能明天就不知道了,所以起名要有特殊含义!

变量引用: $name , $(name)
" "弱引用 强引用‘ ’ 和上面类似
位置变量《》
在脚本代码中请用通过命令行传递给脚本的参数。。
$1 $2.......对应调用第1,第2.....等参数。
shift[n] 删除参数。。。br/>也有一些特殊的参数
$*:传递给脚本的所有参数
[email protected]:传递给脚本的所有参数
$#:传递给脚本的参数的个数
实例:判断给出的文件的行数
#!/bin/bash
linecount="$(wc -l $1| cut -d‘ ‘ -f1)
echo "$1 hai $linecount lines"

bash的配置文件
            全局配置:对所有shell user都生效的
                    /etc/profile
                                    /etc/profile.d/*.sh结尾的所有文件
                /etc/bashrc
            个人配置:只对当前用户生效
                    ~/.bashrc
                    ~/.bash_profile
按照功能划分 也是两类
        profile类别  为交互式登录的shell提供配置
        全局 /etc/paofile 、 /etc/profile.d/*.sh
        个人:  ~/.bash_profile
            功用:
                            (1),用于定义环境变量
                            (2)、运行命令或者脚本
        bashrc类:为非交互式登录的shell提供配置
                        全局:/etc/bashrc
                        个人:~/.bashrc
                        功能使用:
                                    (1)、定义命令别名
                                    (2)、定义本地变量
                    交互式登录:直接通过终端输入账号密码登录
                                                            :使用su - username这样切换的用户
                    非交互式登录:su Username切换的
                                                                :图形界面下打开的终端(都是伪终端)
                                                                :执行脚本
                    后期编译安装mysql或者是apache的时候需要把他们的环境变量定义到系统的环境变量中,要不总得去他们自己的绝对路径中调用
                    这就需要修改/etc/profile配置文件 或者是其.d下面的配置文件
                    如:PATH=$PATH:/usr/local/mysql/bin
                    export PATH
                    修改完成后直接保存
                    但是必须要重新交互式登录shell 才能生效
                    当然也可是使用 . /etc/profile.d/*.sh来生效
                    也可以使用 source 绝对路径来生效 但是source会有一个副作用,就是source一次就会多一次路径

算数运算表达式(也是赋值后变量的引用)
            num1=1
            num2=2
                                算他们的合 则是
                                var= $[$num1+num2]var=$(($num1+num2))
在一个数值范围内随机取出数字,(好像有的面试题中有)
                                这个就用到了bash中的内建变量
                                随机数生成器$RANDOM
        在80以内随机取值 例如:
        echo $[$RANDOM%80+1]后面的+1  是因为前面的80 只到79
        其实也是算数运算表达式

增强型赋值(符号)
+=,-=,*=,/=,%=

let 变量 符号

条件测试:
判断某需求是否满足,需要由测试机制来实现:
专用的测试命令表达式需要由测试命令辅助完成测试过程:

                测试命令:
                            text EXPRESSION
                            [ EXPRESSION ]
                                [[ EXPROSSION ]]
        中括号之间前后必须要有空格
        数值测试:
        gt大于
        ge大于等于
        eq 是否等于
        ne 是否不等于
        lt 小于
        le是否小于等于
        字符串测试:(在使用for循环的时候会用到,判断字符串是否为空等)
        ==:是否等于
        >:是否大于
        <:是否小于
        -z:是否为空,空为真
        -n:测试字符串是否不空,不空则为真
        !=:是否不等于
        =~:左侧字符串是否能被右侧的PATHERN所匹配
                        此表达式一般要使用[[  ]]  双中括号           


以上判断了变量name的第一个字母是否为f
***用于字符串比较的其中的操作数都要使用引号


练习:写一个脚本
接受一个文件路径作为参数
如果参数个数小于1,则提示用户至少给一个参数。。。
如果岑姝个数不小于1,则显示第一参数所指向的文件中的空白行的行数

bash的基础特性 数值运算 数值大小比较 环境变量 位置变量 正则表达式

原文地址:http://blog.51cto.com/12529218/2285207

时间: 2024-10-14 07:38:11

bash的基础特性 数值运算 数值大小比较 环境变量 位置变量 正则表达式的相关文章

Linux目录结构、bash的基础特性、I/O重定向及管道

Linux目录结构 LSB(Linux StandardsBase)是一套核心标准,它保证了LINUX发行版同LINUX应用程序之间的良好结合规定了一系列标准,其中包括文件系统层级结构标准(FHS Filesystem Hierarchy Standard) Linux系统根目录下有众多子目录,这些目录都参照了FHS协定 / ├── bin ├── boot ├── dev ├── etc ├── home ├── lib ├── lib64 ├── lost+found ├── media ├

CentOS系统Shell编程语言基础之Bash的基础特性简介

bash的基础特性之命令历史: 命令历史:shell进程会在其会话中保存此前用户提交执行过的命令~]#history定制history的功能,可通过环境变量实现HISTSIZE:shell进程可保留的命令历史的条数HISTFILE:持久保存命令历史的文件, ".bash_history"HISTFILESIZE:命令历史文件的大小 命令用法: history [-c] [-d offset] [n]or history -anrw [filename]or history -ps ar

Lunix基础入门--bash的基础特性(五)

Bash的基础特性之一(history命令): 命令历史:shell进程会其会话中保存此前用户提交执行过的命令: [[email protected] ~]# history 定制history的功能,可通过环境变量实现: HISTSIZE:shell进程可保留的命令历史条数 [[email protected] ~]# echo $HISTSIZE 1000 HISTFILE:历史命令保存的文件 [[email protected] ~]# echo $HISTFILE /root/.bash

运维基础--Linux中bash的基础特性

bash 的基础特性如下: 一.命令的别名--alias 命令 用来定义和显示命令的别名,unalias撤销定义的别名:但是要注意以下几点: 1.alias的效果仅限于当前shell的生命期: 2.如果修改.bashrc配置文件,其中保存的别名不会立即生效,只有在重新加载该文件的内容后,才会生效且永久生效: 3.为了能够保证设置的别名有效,通常两种操作都要做: 二.命令历史 shell进程会其会话中保存此前用户提交执行过的命令,history是shell的内置命令   1.命令语法格式: his

bash shell基础特性之三(数组)

bash shell基础特性之三(数组) 一.数组定义 数组指连续的多个独立内存空间,每个内存空间相当于一个变量. bash shell只支持一维数组,但参数个数没有限制. 数组元素:数组名+索引(从0开始编号) 声明数组:declare -a ARRAR_NAME(其实不用声明,按数组方式直接赋值给变量即可,BASH就知道那是数组) 关联数组:declare -A ARRAY_NAME 数组元素的赋值:一次赋值全部元素.指定索引进行赋值.一次只赋值一个元素 (1) array=(var1 va

bash的基础特性(1)

bash的基础特性(1) history: 1.命令解释: history命令用于显示指定数目的指令命令,读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件. 该命令单独使用时,仅显示历史命令,在命令行中,可以使用符号!执行指定序号的历史命令.例如,要执行第2个历史命令,则输入!2. 历史命令是被保存在内存中的,当退出或者登录shell时,会自动保存或读取.在内存中,历史命令仅能够存储1000条历史命令,该数量是由环境变量HISTSIZE进行控制. 命令语法: his

Linux基础知识--Linux的文件系统和bash的基础特性

Linux基础知识--linux的文件系统和bash的基础特性 一.Linux文件系统: Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件.目录.软连接及文件保护信息等都存储在其中 linux文件系统遵循FHS(Filesystem Hierarchy Standard,文件系统目录标准),多数Linux版本采用这种文件组织形式.FHS采用了树行组织文件. FHS定义了两层规范,第一层是,/目录下面的各个目录应该要

【Linux相识相知】bash的基础特性

命令历史 shell进程会记录用户提交执行过的命令 可以是用history查看: [[email protected] dev]# history 1 ss -tnl 2 ifconfig 3 vi /etc/sysconfig/network-scripts/ifcfg-ens33 4 reboot 5 systemctl stop firewalld 6 systemctl disable firewalld 7 ifconfig 8 ifconfig 9 startx 10 ping 11

bash的基础特性 tr tee alias 通配符 输入输出重定向

1 .bash的基本特性 bash的特性是不是都在.bash里面呢? 通过alias 显示当前shell中所有的命令别名 设置别名 直接alias 名称=名称就行 此设置的别名只在此shell中管用,如果想全局生效的话 需要修改配置文件 本用户的配置文件在 ~bashrc 全局用户的在/etc/bashrc里面 修改后不会立即生效的 需要重新进去shell或者是 ./etc/shellrc/ 2 .unalias撤销别名 unalias 别名 unalias -a 会撤销所有的别名 3 如果定义