shell变量分为系统变量和自定义变量,变量默认字符串类型

系统变量

$HOME 获取当前用户的家目录

$PWD 获取当前目录的路径

$SHELL 获取shell的执行引擎

$USER 获取当前用户的名称

自定义变量

在linux系统中定义变量A=1,等号两边不能有空格,使用echo $A显示A的值

使用unset A命令,撤销变量

定义只读变量readonly b=3,使用echo $b显示b的值,不能unset

export命令进行设置全局变量,可以让其他shell命令进行使用

特殊变量:$n

定义

n表示数字,范围是0~9,$0表示脚本名称,$1~9表示1~9个参数,10以上的参数要用花括号包裹,如${10}

运行apple.sh文件时可以传递参数

举个栗子

1
2
3
4
5
6
7
8
#!/bin/bash
#
echo "filename:" $0
echo "filename_1:" $1
echo "filename_2:" $2
echo "filename_3:" $3
echo "filename_4:" $4
echo "filename_5:" $5

运行后传递参数bash apple.sh 001 002 test "test sss" "hsgd_dee"

特殊变量:$

定义

获取所有输入参数的个数,常用于循环

举个栗子

1
2
3
4
5
6
7
8
#!/bin/bash
#
echo "filename:" $0
echo "filename_1:" $1
echo "filename_2:" $2
echo "filename_3:" $3
#
echo $#
特殊变量:$#,$*

定义

$*代表命令行中所有参数,把参数作为一个整体

$@代表命令行中所有参数,把参数区分对待

特殊变量:$?

定义

最后一次命令的返回状态,如果返回变量的值为0,则表示最后一次命令执行正确,如果变量的值非0,则证明上一条变量返回不正确

举个栗子

1
2
3
4
5
6
7
[root@b09ed0cc2c9d opt]# $?
bash: 0: command not found
[root@b09ed0cc2c9d opt]# echo $?
127
[root@b09ed0cc2c9d opt]# echo $?
0
[root@b09ed0cc2c9d opt]#