Shell编程 变量

变量的3种类型

1.本地变量  2.环境变量  3.特殊变量

set命令可以查看所用的本地变量和环境变量

本地变量

本地变量——用户自定义的变量

特点是在当前shell环境,当前进程内有效的变量

定义本地变量,在Bash shell环境下,定义本地变量的格式如下

变量名=变量值(若等号两边有空格,则必须使用引号括起来,单双引号,都可)

注意:=两边不能直接接空格

可以同时多个变量赋值 用空格分开 赋值顺序从左到右

只读变量,赋值后变不再改变它的值

读取来自键盘输入的变量

read [-pt] 变量名

-p 后面给出提示信息 -t 后面给出等待的秒数

echo $变量名或者 echo ${变量名}显示本地变量

unset释放本地变量

 

环境变量

其也被称为系统变量,可以用于所有用户进程

常见环境变量
1.PATH:指定命令的搜索路径
2.HOME:指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)
3.HISTSIZE:指保存历史命令记录的条数。
4.LOGNAME:指当前用户的登录名。
5.HOSTNAME:指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。
6.SHELL:指当前用户用的是哪种Shell。
7.LANG/LANGUGE:和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。
8.MAIL:指当前用户的邮件存放目录。
9.PS1:命令基本提示符,对于root用户是#,对于普通用户是$。
10.PS2:附属提示符,默认是“>”。

临时更改PATH,只对本次登陆有效

PATH=$PATH:<路径名1>:<路径名2>......

#可执行文件在/home/play文件夹下,但是并没有在PATH变量中,直接play无法访问,但是当我们添加/home/play至PATH变量后就可以访问
root@wang-Lenovo-ideapad-100S-14IBR:/home# play

Command 'play' not found, but can be installed with:

apt install sox

root@wang-Lenovo-ideapad-100S-14IBR:/home# PATH=$PATH:/home/play
root@wang-Lenovo-ideapad-100S-14IBR:/home# play
~        _            _ 
~  _ __ | | __ _ _  _| |
~ | '_ \| |/ _' | || |_|
~ |  __/|_|\____|\__ (_)
~ |_|            |__/   
~
~ play! 1.5.2, https://www.playframework.com
~
~ Usage: play cmd [app_path] [--options]
~ 
~ with,  new      Create a new application
~        run      Run the application in the current shell
~        help     Show play help

 

永久有效需要更改.bashrc

export 可以将本地变量设置为环境变量

特殊变量

某些变量在一开始执行脚本时就被设定且不再改变,就是特殊变量

 几个常见的特殊变量
$# 存储Shell程序中命令行参数的个数

$? 存储shell中上一个程序执行的返回值(0表示命令执行成功,非0表示有问题)
$[1-n] 存储第[1-n]个命令行参数
$0 存储shell程序自己的名称
$* 存储shell脚本的所有参数(不包含$0
$$ 存储shell脚本的进程号(pid)

 使用示例:

root@wang-Lenovo-ideapad-100S-14IBR:/home# cat aa.sh -n
     1    #!/bin/bash
     2    echo $#
     3    echo $?
     4    echo $1 $2 $3
     5    echo $0
     6    echo $*
     7    echo $$
     8    
root@wang-Lenovo-ideapad-100S-14IBR:/home# ./aa.sh 100 200 300 400 500 600
6
0
100 200 300
./aa.sh
100 200 300 400 500 600
2825

使用应用 输出传入参数年份全部月份的日历

#!/bin/bash
cal 1 $1
cal 2 $1
cal 3 $1
cal 4 $1
cal 5 $1
cal 6 $1
cal 7 $1
cal 8 $1
cal 9 $1
cal 10 $1
cal 11 $1
cal 12 $1

shift命令

运行shift命令后会把每个命令行参数向左移动一个位置,即$2、$3、...以此变为$1、$2...原先的$1将被舍弃

 

posted @ 2019-03-19 11:53  晓风微微  阅读(427)  评论(0编辑  收藏  举报