Shell学习之Bash变量详解
Posted -wenli
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell学习之Bash变量详解相关的知识,希望对你有一定的参考价值。
Shell学习之Bash变量详解
目录
Bash变量
Bash变量注意点
用户自定义变量
环境变量
位置参数变量
预定义变量
Bash变量
用户自定义变量:在Bash中由用户定义的变量。 环境变量:这种变量中主要保存和系统操作环境相关的数据。 位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。 预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
Bash变量注意点
1.变量名称可以由字母、数字和下划线组成,但是不能以数字开头。如果变量名是"2name"则是错误的。 2.在Bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必须指定变量类型为数值型。 3.变量用等号连接值,等号左右两侧不能有空格。 4.变量的值如果有空格,需要使用单引号或双引号包括。 5.在变量的值中,可以使用""转义符。 6.如果需要增加变量的值,那么可以进行变量值得叠加。不过变量需要用双引号包含"$变量名"或用${变量名}包含。 7.如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含。 8.环境变量名建议大写,便于区分。
用户自定义变量
在用户当前的shell进程中使用 一般在 $HOME/.bash_profile 中定义。 也可以在命令行定义,但只在用户当前shell进程中有意义,如果在shell中启动另一个进程或退出,此值将无效。
变量定义: name="liyi" 变量叠加: name=123 name="$name"456 name=${name}789 变量的调用 echo "$name" 或 echo ${name} 变量查看 set 变量删除 unset name
环境变量
环境变量适用于所有用户进程 在/etc/profile中进行定义 在用户进程使用前,必须用export命令导出;建议环境变量都大写。
设置环境变量 export 变量名=变量值 查看环境变量取值 echo $var_name 查询变量 env 删除变量 unset变量名 注:该命令只是从当前用户进程中删除,不会从文件/etc/profile删除
嵌入shell变量
一般来讲,BASH有一些预留的环境变量名,这些变量名不能做其他用 途,通常在/etc/profile中建立这些嵌入的环境变量,但这不绝对,取决于用户 shell的变量列表: CDPATH; EXINIT; HOME; IFS; LOGNAME; MAIL; MAILCHECK; PATH; PS1; PS2; SHELL; TERMINFO; TERM; TZ
重要环境变量详解
PATH变量:系统查找命令的目录,当我们在执行命令时,系统会到这些目录去寻找命令,然后执行。 假设现在创建一个文件test.sh chmod 755 test.sh ./test.sh 如果你不想这么麻烦,怎么办? PATH="PATH":/root(后面为存放test.sh的目录)
PS1变量
默认格式:
可以定义格式的例子:
PS1=‘[[email protected] w]$ ‘ PS1=‘[[email protected]@ h # W]$ ‘ PS1=‘[[email protected]h W]$ ‘
总结:
使用命令定义的环境变量在下次重启就不会生效。
定义永久环境变量在/etc/profile文件中定义。
位置参数变量
我刚开始听到名字的时候,我就想到了python中sys.argv[]的功能,其实位置参数变量和它很相似。
都是接收外部参数,这个参数是用户从外部输入的,第一个$0为程序本身路径,从第二个参数起为用户输入的参数。
例子
#!/bin/bash echo $0 echo $1 echo $2 echo $3
#!/bin/bash num1=$1 num2=$2 sum=$(($num1+$num2)) echo $sum
预定义变量
以上是关于Shell学习之Bash变量详解的主要内容,如果未能解决你的问题,请参考以下文章