bash变量位置参数变量预定义变量环境变量详解
2017-07-28 16:51
381 查看
Shell简化管理员操作,系统管理;
变量的命名规则:有数字、字母、下划线组成,不可以用数字开头;变量名的长度不得超过255个字符;变量名在有效的范围内必须唯一的,Bash变量默认为字符型;
变量的分类:
1. 用户自定义变量:用户自定义的变量;
2. 环境变量:这种变量主要保存的是和系统操作环境相关的数据。变量可以自定义,但是对系统生效的环境变量名和变量作用是固定的;
3. 位置参数变量:这种变量主要是用来向脚本当中传递参数或者数据的,变量名不能自定义,变量作用是固定的
4. 预定义变量:是bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
变量的调用$
Set
Set –u
注:等号左右不能有空格;变量的赋值中有空格需要双引号;
变量的调用:使用”$”; eg: echo $变量名 echo $x
变量的叠加:eg:x=123
进行变量叠加 x=”$x”456或者x=${x}456
输出x=123456
unset x
#删除变量
环境变量与用户自定义变量的区别:
1. 用户自定义变量只在当前shell中生效;
2. 环境变量在当前shell和这个shell中的所有子shell中生效;
3. 环境变量是全局变量,而用户自定义变量是局部变量;
变量可以自定义,对系统生效的环境变量名和变量作用是固定的
设置环境变量:export
变量名=变量值或者变量名=变量值
+ export 变量名
查看环境变量:set
#查看所有变量
env
#查看环境变量
常用环境变量
1. HOSTNAME:
主机名;
2. SHELL: 当前的shell;
3. TREM: 终端环境;
4. HISTSIZE: 历史命令条数;
5. SSH_CLIENT: 当前操作环境是用ssh连接,这里记录客户端ip;
6. SSH_TTY: ssh连接的终端是pts/1;
7. USER: 当前登录的用户;
PATH环境变量:
1. PATH变量:系统查找命令的路径;
2. Echo $PATH
#查看PATH环境变量;
3.
4000
PATH=”PATH”:/root/sh #增加PATH变量的值
Eg:增加一个脚本到PATH环境变量中
vimhello.sh
cphello.sh /bin/
hello.sh#可以直接显示里面的内容
PS1环境变量
1. \d :
显示日期,格式为“星期月日”;
2. \H :
显示完整的主机名。如默认主机名“localhost.localmain”;
3. \t :显示24小时制时间,格式为:“HH:MM:SS”;
4. \A :显示24小时制时间,格式为:“HH:MM”;
5. \u
:显示当前用户名;
6. \w :显示当前所在目录的完整名称;
7. \W:显示当前所在目录的最后一个目录;
8. \$ :提示符。如果是root用户会显示提示符为“#”,如果是普通用户会显示提示符为“$”;
Eg:改一下环境变量,先查看PS1环境变量—echo $PS1
按照ps1的环境变量模式,进行参数修改:PS1=’[\u@\A \w]\$ ‘
当前语气查询
locale
#查询当前系统语系
LANG :定义系统主语系的变量;
LC_ALL:定义整体语系的变量
命令:echo$LANG
#查看系统当前语系
locale –a | more #查看Linux支持的所有语系
Eg:canshu1.sh
#!/bin/bash
num1=$1
num2=$2
sum=$(($num1+$num2))#变量sum的和是num1加num2
echo$sum #打印出变量sum的值
命令:./canshu1.sh 11 22
运行结果为:33
2. $* :这个变量代表命令行中所有的参数,$*把所有的参宿看成一个整体;
3. $@: 这个变量也代表命令行中所有的参数,不过$@把每一个参数区分对待
4. $#: 这个变量代表命令行中的所有参数的个数;
Eg:canshu2.sh
#!/bin/bash
echo “A total of $# paramenters” #使用$#代表所有参数的个数
echo “The paramenters is : $*” #使用$*代表所有的参数
echo “The paramenters is :$@’ #使用$@代表所有参数;
命令:./canshu2.sh 11 22 33 44
输出结果:
A total of 4 paramenters
The paramenters is : 11 22 33 44
The paramenters is : 11 22 33 44
Eg: $*与$@的区别
touch canshu3.sh
#!/bin/bash
for i in “$*” # $*中的所有参数看成一个整体,所以这个for循环只会执行一次
do
echo“The parameters is: $i”
done
for y in “$@” #$@每个中的每个参数都看成独立的,所以“$@”中有几个参数就会循环几次
do
echo“parameter:$y”
done
命令:./canshu3.sh 1 2 3 4
输出结果:1 2 3 4
1
2
3
4
2. $$: 当前进程的进程号(PID);
Eg:命令ls
Echo$$
输出ls的进程号
3. $! : 后台运行的最后一个进程的进程号(PID)
接收键盘输入
read [选项][变量名]
-选项:
-p “提示信息”:在等待read输入时,输出提示信息;
-t 秒数 :read命令会一直等待用户输入,使用此选项可以指定等待时间;
-n 字符数: read命令只接受指定的字符数,就会执行
-s : 隐藏输入的数据,适合用于机密信息的输入
Eg:touchbl.sh
#!/bin/bash
read –p “please input your name : “ –t 30 name #等待用户30s的输入时间
echo $name
read –p “please input your passwd: “ –s passwd #不显示输入的信息
echo –e “\n” #
换行
read –p “please input your sex[M/F]: “ –n 1 sex #输入一个字符后脚本就继续向下执行
什么是变量与变量分类
什么是变量:变量就是可以改变的量,是计算机内存单元,其中存放的值可以改变。变量让你能够把程序中准备使用的每一段数据都赋给一个简短、易于记忆的名字,因此他们十分有用。变量的命名规则:有数字、字母、下划线组成,不可以用数字开头;变量名的长度不得超过255个字符;变量名在有效的范围内必须唯一的,Bash变量默认为字符型;
变量的分类:
1. 用户自定义变量:用户自定义的变量;
2. 环境变量:这种变量主要保存的是和系统操作环境相关的数据。变量可以自定义,但是对系统生效的环境变量名和变量作用是固定的;
3. 位置参数变量:这种变量主要是用来向脚本当中传递参数或者数据的,变量名不能自定义,变量作用是固定的
4. 预定义变量:是bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
变量的调用$
Set
Set –u
用户自定义变量
变量名=变量值 eg:x=5 name=”jie cao”注:等号左右不能有空格;变量的赋值中有空格需要双引号;
变量的调用:使用”$”; eg: echo $变量名 echo $x
变量的叠加:eg:x=123
进行变量叠加 x=”$x”456或者x=${x}456
输出x=123456
unset x
#删除变量
环境变量
环境变量尽量大写环境变量与用户自定义变量的区别:
1. 用户自定义变量只在当前shell中生效;
2. 环境变量在当前shell和这个shell中的所有子shell中生效;
3. 环境变量是全局变量,而用户自定义变量是局部变量;
变量可以自定义,对系统生效的环境变量名和变量作用是固定的
设置环境变量:export
变量名=变量值或者变量名=变量值
+ export 变量名
查看环境变量:set
#查看所有变量
env
#查看环境变量
常用环境变量
1. HOSTNAME:
主机名;
2. SHELL: 当前的shell;
3. TREM: 终端环境;
4. HISTSIZE: 历史命令条数;
5. SSH_CLIENT: 当前操作环境是用ssh连接,这里记录客户端ip;
6. SSH_TTY: ssh连接的终端是pts/1;
7. USER: 当前登录的用户;
PATH环境变量:
1. PATH变量:系统查找命令的路径;
2. Echo $PATH
#查看PATH环境变量;
3.
4000
PATH=”PATH”:/root/sh #增加PATH变量的值
Eg:增加一个脚本到PATH环境变量中
vimhello.sh
cphello.sh /bin/
hello.sh#可以直接显示里面的内容
PS1环境变量
1. \d :
显示日期,格式为“星期月日”;
2. \H :
显示完整的主机名。如默认主机名“localhost.localmain”;
3. \t :显示24小时制时间,格式为:“HH:MM:SS”;
4. \A :显示24小时制时间,格式为:“HH:MM”;
5. \u
:显示当前用户名;
6. \w :显示当前所在目录的完整名称;
7. \W:显示当前所在目录的最后一个目录;
8. \$ :提示符。如果是root用户会显示提示符为“#”,如果是普通用户会显示提示符为“$”;
Eg:改一下环境变量,先查看PS1环境变量—echo $PS1
按照ps1的环境变量模式,进行参数修改:PS1=’[\u@\A \w]\$ ‘
当前语气查询
locale
#查询当前系统语系
LANG :定义系统主语系的变量;
LC_ALL:定义整体语系的变量
命令:echo$LANG
#查看系统当前语系
locale –a | more #查看Linux支持的所有语系
位置参数变量
1. $n :n为数字,$0代表本身,$1-$9代表第一到第九个参数,十个以上的参数需要用大括号包含,如${10};Eg:canshu1.sh
#!/bin/bash
num1=$1
num2=$2
sum=$(($num1+$num2))#变量sum的和是num1加num2
echo$sum #打印出变量sum的值
命令:./canshu1.sh 11 22
运行结果为:33
2. $* :这个变量代表命令行中所有的参数,$*把所有的参宿看成一个整体;
3. $@: 这个变量也代表命令行中所有的参数,不过$@把每一个参数区分对待
4. $#: 这个变量代表命令行中的所有参数的个数;
Eg:canshu2.sh
#!/bin/bash
echo “A total of $# paramenters” #使用$#代表所有参数的个数
echo “The paramenters is : $*” #使用$*代表所有的参数
echo “The paramenters is :$@’ #使用$@代表所有参数;
命令:./canshu2.sh 11 22 33 44
输出结果:
A total of 4 paramenters
The paramenters is : 11 22 33 44
The paramenters is : 11 22 33 44
Eg: $*与$@的区别
touch canshu3.sh
#!/bin/bash
for i in “$*” # $*中的所有参数看成一个整体,所以这个for循环只会执行一次
do
echo“The parameters is: $i”
done
for y in “$@” #$@每个中的每个参数都看成独立的,所以“$@”中有几个参数就会循环几次
do
echo“parameter:$y”
done
命令:./canshu3.sh 1 2 3 4
输出结果:1 2 3 4
1
2
3
4
预定义变量
1. $? : 最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执 行;如果这个变量的值非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确。2. $$: 当前进程的进程号(PID);
Eg:命令ls
Echo$$
输出ls的进程号
3. $! : 后台运行的最后一个进程的进程号(PID)
接收键盘输入
read [选项][变量名]
-选项:
-p “提示信息”:在等待read输入时,输出提示信息;
-t 秒数 :read命令会一直等待用户输入,使用此选项可以指定等待时间;
-n 字符数: read命令只接受指定的字符数,就会执行
-s : 隐藏输入的数据,适合用于机密信息的输入
Eg:touchbl.sh
#!/bin/bash
read –p “please input your name : “ –t 30 name #等待用户30s的输入时间
echo $name
read –p “please input your passwd: “ –s passwd #不显示输入的信息
echo –e “\n” #
换行
read –p “please input your sex[M/F]: “ –n 1 sex #输入一个字符后脚本就继续向下执行
相关文章推荐
- [Shell]Bash变量:自定义变量 & 环境变量 & 位置参数变量 & 预定义变量
- bash变量-位置参数与预定义变量
- LINUX BASH SHELL位置变量与特殊变量参数
- Shell编程 详解特殊变量之位置参数
- 环境变量;位置参数变量;预定义变量
- PHP中的预定义变量$_SERVER参数详解
- [linux device driver] Chapter 03:以scull_load为引,详解Bash的位置参数和内部参数
- Shell 变量详解教程之位置变量与预定义变量。
- Maven <Profiles>定义不同环境的参数变量
- linux alias命令参数及用法详解--linux定义命令别名alias
- 工作总结之IDCAMS——VSAM文件定义及参数详解
- 如何把变量或者数组定义到SDRAM及任意位置
- 问题(怎样在dephi中引用.net中定义的类.方法参数,参数类型为XMLdocument?我要调用此方法并把实例花的xmldocument类型的变量作为参数给它。)
- Linux学习之位置参数变量
- C语言中变量定义的位置
- Thymeleaf 之 内置对象、定义变量、URL参数及标签自定义属性
- Linux 使用位置变量向脚本传递参数
- C# 定义了 7 种变量类别:静态变量、实例变量、数组元素、值参数、引用参数、输出参数和局部变量
- 脚本编程中的test、bash调试、变量计算、参数
- 2018-2-4Linux系统管理(5)bash脚本编程参数变量及条件判断