shell脚本基础----变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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进程及其子进程
本地变量(局部变量)
"Var_name=valuue" 本地变量,作用域为当前shell进程。对当前shell外的其他shell进程,包括当前shell的父shell,子shell进程均无效
"Local var_name=value" 局部变量,作用域为当前代码段,常用于函数
位置变量
$1,$2 用于引用脚本的参数
shirt 依此向前推进
特殊变量(bash内置的,用来保存某些特殊数据的变量,也称系统变量)
"$# 是传给脚本的参数的个数"
"$0 是脚本本身的名字"
"$! 是shell最后运行的后台Process的PID"
"[email protected] 是传给脚本的所有参数的列表"
"$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个"
"$$ 是脚本运行的当前进程ID号 "
"$? 是显示上条命令的退出状态,0表示没有错误,其他表示有错误"
bash内建环境变量
"[[email protected] ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[[email protected] ~]# echo $SHELL
/bin/bash
[[email protected] ~]# echo $UID
0
[[email protected] ~]# echo $HISTSIZE
1000
[[email protected] ~]# echo $HOME
/root
[[email protected] ~]# echo $PWD
/root
[[email protected] ~]# echo $HISTFILE
/root/.bash_history
[[email protected] ~]# echo $PS1
[[email protected]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 ` 算术运算表达式,表达式各操作及运算符之间要有空格,而且要使用命令引用
以上是关于shell脚本基础----变量的主要内容,如果未能解决你的问题,请参考以下文章