系统变量:
常用系统变量 echo $系统变量 $HOME 家目录、 $PWD当前目录、 $SHELL默认解析器、 $USER当前用户
自定义变量:
基本语法 (1)定义变量:变量=值 (等号两边不能有空格) (2)撤销变量:unset 变量 (3)声明静态变量:readonly 变量=值 ,注意:不能unset,只能等系统重启时更新。 变量定义规则 (1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。 (2)等号两侧不能有空格 (3)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。 (4)变量的值如果有空格,需要使用双引号或单引号括起来。 (5)export 变量 把变量提升为全局环境变量,可供其他Shell程序使用
特殊变量:
$n:
代表命令行输入参数。
$1-$9代表命令行中输入的第一到第九个参数,$0代表该脚本名称,十以上的参数需要用大括号包含,如 ${10}。 在脚本中,如需输出多个参数,echo后要加引号 echo "$0 $1 $2"
$#:
获取命令行中输入参数的个数。
$* 、 $@:
代表命令行中所有的输入参数。
区别和联系: $* 和 $@都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$1 $2 … $n的形式依次输出所有参数,二者相同。
#!/bin/bash
for i in $*
do
echo $i
done
for j in $@
do
echo $j
done
sh loop.sh hello world my friends
output:
hello
world
my
friends
hello
world
my
friends
当它们被双引号“”包含时,“$*”会将所有的参数作为一个整体,以“$1 $2 … $n”的形式输出所有参数;“ $@”会将各个参数分开,以“$1” “$2”…” $n”的形式输出所有参数。
#!/bin/bash
for i in "$*"
do
echo $i
done
for j in "$@"
do
echo $j
done
sh loop.sh hello world my friends
output:
hello world my friends
hello
world
my
friends
$?:
获取上一条命令的返回状态。
如果值为0,证明上一个命令正确执行; 如果值为非0,则证明上一个命令执行出错。(具体是哪个数,由命令自己来决定)
|