详解Linux bash变量

Posted Linux就该这么学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详解Linux bash变量相关的知识,希望对你有一定的参考价值。

纯手工打造每一篇开源资讯与技术干货,数十万程序员和Linuxer已经关注。

导读

Linux中编写SHELL脚本必然要接触到变量,本文对bash中不同的变量类型进行一个简要说明

详解Linux bash变量


Bash变量类型


  1. 本地变量

  2. 局部变量

  3. 环境变量

  4. 位置变量

  5. 特殊变量(内置)

这里需要注意的是对变量进行赋值时,"="两边是不能有空白的,否则就会报错。

root@ubuntu:~# LIST='/etc'
root@ubuntu:~# echo $LIST
/etc
root@ubuntu:~# LIST = '/etc'
LIST: command not found


本地变量


var_name=value:作用域为整个bash进程可以使用;
变量命名规范:

  1. 只能含字母、数字和下划线,并且以字母和下划线开头。

  2. 最好不要跟系统已有的环境变量重名。

  3. 变量名可充分体现这个变量的作用。


局部变量


声明局部变量使用“local”命令,局部变量作用域只在作用范围内有效。
local var_name=value:作用域为当前代码段


环境变量


作用域为当前shell进程及其子进程,不能影响到其父进程,声明环境变量使用“export”命令。

export var_name=value

,如果变量已经定义可以只是用变量名 export var_name,即可用下面两种方式声明环境变量:
1. export var_name=value
2. var_name=value
export var_name
脚本在执行命令时会启动一个子shell环境变量:
系统自动执行的脚本(非命令行启动)就需要自我定义需要的个环境变量


位置变量


$1,$2,$3,……
cat first.sh test.txt hello
$1: first.sh
$2: test.txt
$3: hello

shift:踢掉参数
shift n:踢掉n个参数,默认踢掉一个参数
这里需要注意的是$0为调用该脚本的名字,而参数作为变量的话第10个变量不能直接写$10,而需要写成${10}。


特殊变量


$?:上一个命令执行状态的返回值:
程序执行可能有两种返回值:
1. 程序执行结果
2. 程序状态返回吗(0-255)
0 则为执行正确
1-255 则执行出错(1,2,127系统预留);
可以自定义返回值来获取不同的错误状态。

$#:获取当前shell命令行中参数的总个数
$*:获取当前shell的所有参数 “$1 $2 $3 …,受IFS控制
$@:这个程序的所有参数 “$1″ “$2″ “$3″ “…”,不受IFS控制
$0 获取当前执行的shell脚本的文件名
$n 获取当前执行的shell脚本的第n个参数值,n=1..9
$$ 获取当前shell的进程号(PID)
$! 执行上一个指令的PID

原文来自:


让您学习到的每一节课都有所收获

《Linux就该这么学》是由资深运维专家刘遄及全国多名红帽架构师(RHCA)基于最新RHEL7系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材。

刘遄老师QQ:5604241

学员助教QQ:5604674

Linux技术交流A群():560843

Linux技术交流B群:340829

Linux技术交流C群:463590

官方站点:www.linuxprobe.com

☀ 电脑在线阅读效果更佳:

http://www.linuxprobe.com/chapter-00.html

按住图片3秒,即可自动关注。

点击左下角查看更多热门技术



以上是关于详解Linux bash变量的主要内容,如果未能解决你的问题,请参考以下文章

linux下Bash编程之数组Array详解

bash变量详解

-bash: /usr/bin/ls: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory(代码片段

Bash漏洞详解

玩转Bash变量

玩转Bash变量