二、Shell变量

类型    注释
强变量    变量在使用前,必须事先声明,甚至还需要初始化
弱变量    变量用时声明,甚至不区分类型

变量的作用:用来保存变化的数据

变量名    名称固定,由系统设定或用户定义
变量值    根据用户设置、系统环境变化而变化

设置方法

变量名=变量值

Shell变量的类型

类型      说明
环境变量    由系统维护,用于设置工作环境,只有个别环境变量用户可以直接更改
位置变量    通过命令行给脚本程序传递参数
预定义变量    bash内置的一类有特殊用途的变量,可以直接调用,但不能直接赋值或修改
自定义变量    由用户自己设置、修改及使用

环境变量

在系统启动时,加载系统配置文件定义的变量
变量名和变量值是系统设置
变量名通常用大写字母定义
变量存的值是规定的,通常情况下不建议修改系统环境变量的值
作用域为当前shell进程及其子进程

配置文件

配置文件        注释
/etc/profile    
~/.bashrc_profile    

相关操作

env    列出所有的环境变量
set    列出所有变量

常见的环境变量

   
PWD    
PATH    
USER    
LOGNAME    
UID    
SHELL    
HOME    
PS1    
PS2    

如何查看变量值

echo $变量名

位置变量:只读变量

位置变量      只读变量
          在执行脚本或Shell时,给脚本或函数传值的
$1.....$n      表示为$n,n为正整数
${10}......${N}    

预定义变量(特殊变量)

预定义变量

当前脚本使用的Shell里面预先定义好的变量
变量名是固定的,变量值通常不修改

变量名

变量名    含义
$$    当前运行进程的PID号
$?    最后一次命令执行后的返回状态值,0表示正常,1或其他值为异常
$0    当前运行的进程或脚本名
$#    位置变量的个数
$*    将所有的命令行所有参数视为单个字符串,等同于"$1$2$3"
$!    后台最后一个进程的PID号
$@    将命令行每个参数视为单独的字符串,等同于"$1""$2""$3"

练习:写一个脚本

给脚本传递两个参数(整数)

显示此两者之和,之乘积

#!/bin/bash
#
if [ $# -lt 2 ]; then
  echo "Usage: cacl.sh ARG1 ARG2"
  exit 8
fi

echo "The sum is: $[$1+$2]."
echo "The prod is: $[$1*$2]."

退出状态及其含义:

退出状态及其含义    注释
0          表示运行成功,程序执行未遇到任何问题
1~125       表示运行失败,脚本命令、系统命令错误或参数传递错误
126        找到该命令但无法执行
127        未找到要运行的命令
>128       命令被系统强行结束
12127     系统预留

难点理论与实战剖析

$*和$@的区别
$*:将所有的命令行所有参数视为单个字符串,等同于"$1$2$3"
$@:将命令行每个参数视为单独的字符串,等同于"$1""$2""$3"。这是将参数传递给其他程序的最佳方式,因为它会保留所有内嵌在每个参数里的任何空白。

自定义变量(局部变量)

猜你喜欢

转载自www.cnblogs.com/zhongguiyao/p/8933883.html