[shell基础]——变量

变量的赋值

#定义变量,注意等号两边没有任何空格
variable=
#定义环境变量
export variable=
#双引号:可含空格、可转义特殊字符
variable=" "              
#$() 或 反引号:将命令结果赋值给变量
variable=$( )  
variable=`  `     
#将变量值赋值给变量
gg=$aa$bb

变量的取值

#取值
$variable
#标准写法,建议使用此方法
${variable} 

#示例:
#DAY
=sunday
#
echo $DAY
sunday
#
echo "hello sunday"> $DAY_file.txt
#
ls

#
echo "hello sunday"> ${DAY}_file.txt
#
ls sunday_file.txt

变量的取消与查看 

#unset:取消变量和函数
unset variable
unset function
#env    查看系统所有的环境变量
#set    查看所有的系统预设变量+用户自定义变量

局部变量/用户变量

      局部变量:只在当前的shell中有效;
      用户变量:针对与当前用户有效, .bashrc 下可以查看。

                     

全局变量/环境变量

      当前创建变量的shell即为父shell,全局变量可以从父shell传递到子shell、孙shell···

      注意环境变量只能向下传递而不能向上传递。

                   

一些常见的预设变量(可通过 man bash查看):

#变量BASH:显示当前的bash shell
[root@localhost shell]# echo $BASH
/bin/bash

#变量BASH_VERSION:显示当前bash shell版本
[root@localhost shell]# echo $BASH_VERSION
4.1.2(1)-release

#变量HOSTNAME:主机名
[root@TXY_host test]# echo $HOSTNAME
TXY_host

#变量HOSTTYPE:主机架构
[root@TXY_host test]# echo $HOSTTYPE
x86_64

#变量MACHTYPE:主机类型的gnu标识
[root@TXY_host test]# echo $MACHTYPE
x86_64-redhat-linux-gnu

#变量LANG:系统的语言环境
[root@TXY_host test]# echo $LANG
C
#设置语言环境为中文
# export LANG=zh_CN.UTF-8

#变量PWD:当前目录
[root@TXY_host test]# echo $PWD
/shell/test

#变量OLDPWD:上一次访问目录
[root@TXY_host test]# echo $OLDPWD
/shell

#变量EUID:显示当前用户的UID
[root@localhost ~]# echo $EUID
0

#变量CDPATH:可以快速进入此目录
#cd时会首先查看当前目录是否有network-scripts,若没有则进入CDPATH定义的目录
[root@localhost shell]# CDPATH="/etc/sysconfig"
[root@localhost shell]# cd network-scripts
/etc/sysconfig/network-scripts

#变量FUNCNAME:用在函数内,显示当前函数名
[root@TXY_host test]# cat funcname.sh
#/bin/bash
funcname()
{
   echo $FUNCNAME
}
funcname

[root@TXY_host test]# bash funcname.sh
funcname

特殊变量

1.位置参数

        $0:预留保存实际脚本名字;无论脚本是否有参数,此值均可用。
        $1-$9:第1—9个参数

        ${10}:位置参数大于9后的表示方法

        $#:脚本参数的个数总和

        $*/$@:表示脚本的所有参数

2. 特定的变量参数

        $!   Shell最后运行的后台Process的PID  
        $-   显示shell使用的当前选项,与set命令功能相同
       $$   脚本运行的当前进程ID号

# cat aatest.sh
#!/bin/bash
echo $$
# ./aatest.sh
3520

3.命令返回值

        执行一条命令后,

        $? 值为0表示执行成功,非0则表示执行失败。 

原文地址:https://www.cnblogs.com/snsdzjlz320/p/5597766.html