shell脚本基础----变量

  • 1.1shell的定义

    1.命令的堆积
    2.特定的语法与特定的命令组成的文件

    执行脚本命令

    bash   test.sh   不需要添加执行权限,使用解释器直接解释
    sh    tesh.sh
    ./tesh.sh     相对路径,需要添加执行权限

1.2shell脚本基础---变量

变量:用一个固定的字符串表示不固定的内容
变量名称注意事项

1.不能以数字开头(包含字母、数字、下划线)
2.不能使用程序中的保留字(例如:if   for)
3.不能跟系统中已有的环境变量重名(尽量不要全部使用大写,尽量不要用‘_’下划线开头)
4.见名知义

变量类型

    "字符型"     例如:a=abc
    "数字型"       整型      浮点型,例如:a=1.1
    "布尔型“(是否)   true   false

变量操作

设置变量 
引用变量

$变量名
${变量名}

**bash特性**
      "反斜杠    \   使反斜杠后面的一个变量变为字符串"
     "单引号      ’   转义其中所有的变量为单纯的字符串"
     "双引号    ""    保留其中的变量属性,不进行转义处理"
     "反引号    ``     把其中放入命令执行后返回结果"
撤销变量(unset  a  作用范围:仅在当前shell中有效)

bash变量类型

环境变量

export     作用域为当前shell进程及其子进程

shell脚本基础----变量

本地变量(局部变量)

"Var_name=valuue"  本地变量,作用域为当前shell进程。对当前shell外的其他shell进程,包括当前shell的父shell,子shell进程均无效
"Local  var_name=value"   局部变量,作用域为当前代码段,常用于函数

位置变量

$1,$2    用于引用脚本的参数
shirt      依此向前推进

特殊变量(bash内置的,用来保存某些特殊数据的变量,也称系统变量)

"$#        是传给脚本的参数的个数"
"$0         是脚本本身的名字"
"$!          是shell最后运行的后台Process的PID"
"$@        是传给脚本的所有参数的列表"
"$*          是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个"
"$$         是脚本运行的当前进程ID号 "
"$?         是显示上条命令的退出状态,0表示没有错误,其他表示有错误"

bash内建环境变量

"[root@yaoxiaorong ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[root@yaoxiaorong ~]# echo $SHELL
/bin/bash

[root@yaoxiaorong ~]# echo $UID
0

[root@yaoxiaorong ~]# echo $HISTSIZE
1000

[root@yaoxiaorong ~]# echo $HOME
/root
[root@yaoxiaorong ~]# echo $PWD
/root

[root@yaoxiaorong ~]# echo $HISTFILE
/root/.bash_history

[root@yaoxiaorong ~]# echo $PS1
[\u@\h \W]\$ "

只读变量

   readonly   不能修改值,不能销毁,只能等shell进程

脚本基础
定义:按实际需求,结合命令流程控制机制实现的源程序
程序返回值

程序执行的结果
程序状态返回代码(0-255)
0:正确执行
1-255:错误执行,1、2、127系统预留,有特殊意义

脚本测试

bash -n test.sh     检查脚本是否有语法错误
bash  -x  test.sh    单步执行,检查脚本错在那里

写脚本注意事项

禁止将未成功执行过的代码直接写进脚本
脚本中的命令一定要用绝对路径

shell算术运算

A=3
B=6
let  C=$A+$B   表达式
C=$[$A+$B]    表达式
C=(($A+$B))    表达式
C=` expr  $A   + $B `  算术运算表达式,表达式各操作及运算符之间要有空格,而且要使用命令引用   

猜你喜欢

转载自blog.51cto.com/13835001/2153303