zoukankan      html  css  js  c++  java
  • 架构师的成长之路初片-shell-1(变量)

    三,变量

    常量 固定不变的值

    变量 以固定的名称存放有可能发生变化的值,可以提高脚本对

    环境的适应力

    1: 自定义变量,变量名称可以用大小写字母,数字,下划线,不能

    使用特殊符号,不能以数字开头,等号两边不能有空格

    基本格式: 变量名=变量的值

    x=10   //定义变量,创建变量,给变量赋值

    echo $x  //调用变量

    unset  x  //取消变量的定义

    x=  //将变量的值定义为空,效果同上

    echo ${x}RMB  //为变量添加大括号避免与后续内容发生混淆

    1: 环境变量,由系统提前定义好,使用时直接调用

    USER 当前用户名    UID 当前用户id  HOME 当前用户家目录

    SHELL 当前用户的解释器  HOSTNAME 主机名  PWD 当前位置

    PS1 一级提示符  PS2 二级提示符   PATH 存储了系统中执行指令的所在目录

    可用: echo $USER   来查看变量的值

    ############################################################################

    3: 预定义变量与位置变量

    $1  执行脚本后跟随的第一个位置参数

    $2  执行脚本后跟随的第二个位置参数

    $3  执行脚本后跟随的第三个位置参数

    $*  所有位置参数

    $#  所有位置参数的个数

    $$  随机的进程号

    $?  判断上一条指令是否成功,0是成功,非0是失败

    #####################################################################################

    例子:

    #!/bin/bash

    useradd $1    //创建用户时调用第1个位置变量

    echo $2 | passwd --stdin $1   //配置密码时调用第2个位置变量

    执行脚本时,使用bash test06.sh xyz 123  即可创建xyz账户并配置密码123

    env | grep HOST  //env可以显示所有环境变量,通常可以配合grep过滤查询

    xyz=8888

    set | grep xyz=  //set可以查看所有变量,可以配合grep过滤查询

    ---------------------------------------------------------------------------------

    四:变量的扩展

    1,引号与反撇号

    ""  双引号  界定范围 

    touch "a b"  //可以创建a空格b的文件

    a=10

    echo  "$a"  //可以调用变量

    ''   单引号  界定范围  屏蔽特殊符号的功能

    touch  'a b'  //也可以创建a空格b的文件

    echo  '$a'  //无法调用变量,$是调用变量的特殊符号,被单引号屏蔽

    ``   反撇号  可以获得命令的执行结果,使用$( )可以得到相同效果

    a=date    //定义变量时如果使用命令则不会直接识别

    a=`date`   //使用反撇号可以将命令的执行结果赋值给变量

    a=$(date)  //效果同上

     

    2:使用read指令,以交互式使用脚本

    改良版:

    #!/bin/bash

    read  -p  "请输入用户名"  u

    useradd $u

    stty -echo   //屏蔽回显

    read  -p  "请输入密码"  p

    stty echo    //恢复回显

    echo $p | passwd --stdin $u

     

    3,使用export命令发布全局变量

    局部变量 ,仅当前解释器进程中可以使用的变量

    全局变量,解释器进程产生的子进程也可以使用的变量

    a=10  //在父进程创建变量,子进程无法使用,默认情况下是

    局部变量

    export  a  //将已有的变量发布为全局效果,进入子进程后可以调

    用该变量

    export  b=20  //发布一个新变量为全局效果

    export  -n  a  //取消变量的全局效果,恢复为局部变量

    注意,测试时要在父进程创建变量,然后可以执行bash进入

    子进程测试效果,如果要返回父进程要执行exit指令

    -------------------------------------------------------------------

    五,shell中的运算

    加、减、乘、除、求模(取余数)

    expr  可以运算并输出结果

    1expr   可以运算并输出结果

    expr 1 + 1   //加法,注意,运算符号两边要有空格

    expr 2 - 1    //减法

    expr 2 * 2     //乘法,使用转义符号可以屏蔽之后一个字符的特殊含义

    expr 4 / 2    //除法

    expr 10 % 3   //10除以3取余数

    [root@svr7 opt]# a=10

    [root@svr7 opt]# b=20

    [root@svr7 opt]# expr $a + $b    //也支持变量的运算

    30

    [root@svr7 opt]# expr $a + 100

    ------------------------------------------------------------------------------------------------------------

    练习题:

    1,如何执行Shell脚本?

    2 自定义Shell变量时,有哪些注意事项?

    3 编写一个Shell脚本程序,用来报告当前用户的环境信息。

    4 简述预定义变量$$$?$#$*的作用。

    5 编写一个Shell脚本程序,能够部署ftp服务,并开启ftp默认共享的目录权限。

    6 简述单引号、双引号、反撇号在变量赋值操作中的特点。

    ------------------------------------------------------------------------------------------------------------------------

  • 相关阅读:
    Oracle设置某张表为只读
    greenplum不能下载问题解决方法(转)
    MyBatis学习-入门
    Oracle-数据泵使用
    oracle锁表
    linux查看文件大小
    Apache日志分割
    nginx日志切割
    zookeeper 事务日志查看
    zookeeper连接 org.apache.curator.framework.imps.CuratorFrameworkImpl Background exception was not retry-able or retry gave up [main-EventThread]
  • 原文地址:https://www.cnblogs.com/ahaocloud/p/14374612.html
Copyright © 2011-2022 走看看