Shell基础——Bash变量

本章讲解了bash变量包括用户自定义变量、环境变量、位置参数变量、预定义变量和read接收键盘输入的方法

 

一、用户自定义变量

echo查看单个变量

[[email protected] /]# name=123   直接定义变量即可

[[email protected] /]# echo $name

123

[[email protected] /]# name="$name"456

[[email protected] /]# echo $name    

123456

set查看所有变量

set     查看所有变量

unset  变量名      删除某个变量

 

 

二、环境变量

主要保存和系统环境相关的数据,一般修改已有变量数值,也可增加变量,不光在当前shell生效,子shell也生效

[[email protected] /]# export age=18      定义环境变量 

[[email protected] /]# env              查看所有环境变量

[[email protected] /]# unset age         删除变量通用

 

*具体子shell什么意思呢?

[[email protected] /]# bash            在当前shell中进入一个新shell叫做子sehll

[[email protected] /]# pstree           查看目录树

init─┬─anacron

     ├─auditd───{auditd}

     ├─crond

     ├─rsyslogd───3*[{rsyslogd}]

     ├─sshd───sshd───bash───bash───pstree

       通过crt的ssh方式连接      登入系统默认的shell   刚才手动创建的子shell

三、位置参数变量

主要想脚本传输参数或数据,变量名不能自定义,变量作用固定,其实属于预定义变量

 

Shell基础——Bash变量

$n示例

[[email protected] sh]# vi weizhicanshu1.sh   

#!/bin/bash

sum=$(( $1+$2 ))

echo "sum is : $sum"

[[email protected] sh]# chmod 755 weizhicanshu1.sh

[[email protected] sh]# ./weizhicanshu1.sh 5 6     

sum is : 11

$*和[email protected]示例

[[email protected] sh]# cat weizhicanshu2.sh

#!/bin/bash

for i in "$*"

        do

                echo "$i"   所有参数看作整体循环一次

        done

echo ------

for j in "[email protected]"

        do

                echo "$j"  所有参数区分对待循环

      done

[[email protected] sh]# ./weizhicanshu2.sh 1 2 3

1 2 3

------

1

2

3

四、预定义变量

bash中已经定义好的,变量名和作用固定

主要使用$?

Shell基础——Bash变量

 

[[email protected] sh]# ls

weizhicanshu1.sh  weizhicanshu2.sh

[[email protected] sh]# echo $?

0              正确执行输出0

[[email protected] sh]# lss

bash: lss: command not found

[[email protected] sh]# echo $?

127           报错输出错误代码

 

五、read接收键盘输入

Shell基础——Bash变量

[[email protected] sh]# cat read.sh

#!/bin/bash

read -t 30 -p "input your name: " name

echo "$name"

read -t 30 -s -p "input your age: " age

#-s保护年龄隐私

echo -e

echo "$age"

read -t 30 -n 1 -p "select your sex[m/w]: " sex

#使用-n 1只接收一个字符直接返回不用回车

echo -e 

echo "$sex"

[[email protected] sh]# chmod 755 read.sh         

[[email protected] sh]# ./read.sh         

input your name: haha

haha

input your age:

18

select your sex[m/w]: m

m