Shell编程 之 变量

1. 概述

  Shell与其他语言的对比:php和java主要实现功能,Shell简化管理操作

2. Bash变量与变量分类(Bash是Linux的Shell)

  2.1 什么是变量与变量分类

    2.1.1 变量是计算机内存的单元,其中存放的值可以改变

    2.1.2 变量命名规则

      - 开头只能字母或下划线,中间为字母、数字和下划线

      - 长度不能超过255个字符

      - 在有效的范围内必须是唯一的

      - 在Bash中,变量的默认类型都是字符串

    2.1.3 变量按照存储数据分类:字符串型,整型,浮点型,日期型

    2.1.4 变量的分类:

      - 用户自定义变量

      - 环境变量

      - 预定义变量(包括位置参数变量)

3. 用户自定义变量(是局部变量)

  3.1 变量定义:变量名=变量值(等号左右不能有空格),例如:x=5 或 name="wayne"

  3.2 变量调用:$变量名,例如:echo $x 或 echo $name

  3.3 变量叠加:x="$x"456  # 在x后叠加456

  3.4 变量查看:set查看所有变量  tips:set -u后查看变量为空还是变量不存在

  3.5 变量删除:unset 变量名

4. 环境变量(是全局变量)

  bash命令进入子shell,exit命令退出到父shell,pstree查看进程

  对系统生效的环境变量名和变量作用是固定的

  设置环境变量:export 变量名=变量值

  查看环境变量:set  # 查看所有变量    env # 查看环境变量

  调用和删除:echo $变量名  和  unset 变量名

  常用环境变量:

    

  PATH环境变量:系统查找命令的路径

    echo $PATH  # 查看PATH环境变量

    PATH="$PATH":/root/sh  # 增加PATH变量的值 (临时添加)

   PS1环境变量:命令提示符设置(默认为PS1='[u@h W]$ ')

    

5. 环境变量中的 语系变量

  5.1 locale  # 查询当前系统语系

    - LANG:定义系统主语系的变量

    - LC_ALL:定义整体语系的变量

   5.2 语系变量LANG

    - echo $LANG  # 查看系统当前语系

    - locale -a | more  # 查看Linux支持的所有语系

   5.3 查询系统默认语系

    - cat /etc/sysconfig/i18n

  5.4 Linux中文支持 - 纯字符界面不支持中文显示

6. 位置参数变量

  

  6.1 $n  向脚本中传递需要脚本运算的值

    [root@localhost sh]# ./para.sh 1 2

#!/bin/bash

sum1=$((10+20))
echo $sum1

num1=$1
num2=$2

sum2=$(($num1+$num2))

echo $sum2
~                                                                          
~                                                                          
~                                                                                                                                                 
"para.sh" 11L, 92C 

  6.2 $* 和 $@ 和 $#

#!/bin/bash

echo "$* is: $*"

echo "$@ is: $@"

echo "$# is: $#"
~                                                                          
~                                                                          
~                                                                                                                                                 
"para2.sh" 7L, 69C     

    

#!/bin/bash

for x in "$*"
        do
                echo "$* is: $x"
        done

for y in "$@"
        do
                echo "$@ is: $y"
        done
~                                                                          
~                                                                          
~                                                                                                                                                   
"para3.sh" 11L, 102C

    

7. 预定义变量

   

  7.1 $?  上一条命令正确执行,则这个变量的值为0

    

  7.2 $$  和 $!

#!/bin/bash

echo "$$ is current PID: $$"  # 当前进程ID号

find / -name hello.sh &  # 最后的&符号表示在后台运行
echo "$! is the last PID in background: $!"  # 后台最后一个进程ID号
~                                                                          
~                                                                          
~                                                                                                                                                    
"process.sh" 6L, 113C

    

8. 接收键盘输入  read  选项  变量名

   

#!/bin/bash

read -p "input your name: " -t 30 name  # 秒数
echo $name

read -p "input your password: " -s password  # 隐藏
echo
echo $password

read -p "input your gender: [M/F]" -n 1 sex  # 字符数
echo
echo $sex
~                                                                          
~                                                                          
~                                                                                                                                                   
"read.sh" 12L, 188C

  

  

原文地址:https://www.cnblogs.com/wnzhong/p/6383927.html