Linux 第一章 shell编程课程变量基础

1.      shell编程课程建简介

shell基础   (Linux达人养成计划第九章)

bash变量

shell运算符

环境变量配置文件

正则表达式

流程控制语句

 

shell与其他语言的对比:

1.      PHP和Java主要实现功能

2.      shell简化管理操作

第二章

bash变量

1.      什么是变量和变量分类

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

变量让你能够把程序中准备使用的每一段数据都赋予给一个简短,易于记忆的名字,因此他们十分有用

 

变量命名规则

变量名必须以字母或下划线开头,名字中间只能由字母、数字和下划线组成

变量名的长度不能超过255个字符

变量名在有效的范围内必须是唯一的

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

(在任何系统中,目录名,文件名,变量名都要有含义)

 

变量类型分类:字符串型、整形、浮点型、日期型

 

2.      用户自定义变量

变量自定义的。

 

(1)变量名=变量值

例如:

x=5

name= “jie cao”

 

(2)变量调用

echo $变量名

例如

           echo $x

           echo $name

 

(3)变量叠加

x=123

x=”$x”456

x=${x}789

 

(4)变量查看

set选项

-u 如果设定此选项,调用未声明变量时会报错(默认无任何提示)

 

(5)删除变量

unset 变量名

 Linux 第一章 shell编程课程变量基础

3.      环境变量

这种变量中主要保存的是和系统操作环境相关的数据。变量可以自定义,但是对系统生效的环境变量和变量作用是固定的。

 

环境变量与用户自定义变量区别

用户自定义变量只在当前shell中生效(用户自定义变量是局部变量)

环境变量在当前shell和这个shell的所有子shell中生效(环境变量是全局变量)

 

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

 

           设置环境变量

           export 变量名=变量值

           或

           变量名=变量值

export变量名

 

查看环境变量

set

#查看所有变量

 

env

#查看环境变量

 

删除环境变量

unset

 

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

echo $PATH

#查看PATH环境变量

PATH=“$PATH”:/root/sh

 

 

[[email protected]~]# PATH="$PATH":/root

[[email protected]~]# echo $PATH

/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root

[[email protected]~]# hello.sh

xiao dian yin hen hao kan

 

 

Linux 第一章 shell编程课程变量基础

 

[[email protected] ~]# echo $PS1

[\[email protected]\h \W]\$

[[email protected] ~]# PS1='[\[email protected]\a \w]\$ '

[[email protected] ~]# PS1='[\[email protected]\A \w]\$ '

[[email protected]:28 ~]# cd /usr/local/src

[[email protected]:28/usr/local/src]# PS1='[\[email protected]\h \W]\$ '

 

当前语系查询

locale

#查阅当前系统语系

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

LC_ALL:定义整体语系的变量

echo $LANG

#查看系统当前语系

locale –a | more

#查看Linux支持的所有语系

 

查询系统默认语系

cat/etc/sysconfig/i18n

 

Linux中文支持

前提条件,正确安装的中文字体和中文语系

如果有图形界面,可以正确支持中文显示

如果使用第三方远程工具,只要语系设定正确,可以支持中文显示

如果使用纯字符界面,必须使用第三方插件(如zhcon等)

 

 

 

4.      位置参数变量

这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。

Linux 第一章 shell编程课程变量基础

Linux 第一章 shell编程课程变量基础

[[email protected]]# vim canshu1.sh

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

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

         例题2

 Linux 第一章 shell编程课程变量基础

#!/bin/bash

 

echo "\$* can shu shi : $*"

 

echo "\[email protected] can shu ye shi : [email protected]"

 

echo "\$# can shu ge shu shi :$#"

~                                    

[[email protected] sh]# ./canshu2.sh 11 11 2233

$* can shu shi : 11 11 22 33

[email protected] can shu ye shi : 11 11 22 33

$# can shu ge shu shi : 4

 

例题:for循环输出

#!/bin/bash

for i in 1 2 3 4

         do

                   echo$i

         done

 

例子3:$*与[email protected]的区别

#!/bin/bash

 

for i in "$*"

       do

                echo $i

       done

 

for y in "[email protected]"

       do

                echo $y

       done

         

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

[[email protected] sh]# ./chanshu3.sh 1 2 3 56

1 2 3 5 6

1

2

3

5

6

 

 

5.      预定义变量

是bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的

#!/bin/bash

 

echo"dang qian :$$"

 

find/root -name hello.sh &

 

echo "hou tai : $!"

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

dang qian :8120

hou tai : 8121

[[email protected] sh]# /root/hello.sh

 

接收键盘输入

read [选项] [变量名]

选项

         -p“提示信息”:在等待read输入时,输出提示信息

         -t秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间

         -n字符数:read命令只接受指定的字符数,就会执行

         -s:隐藏输入的数据,适用于机密信息的输入

 

 

#!/bin/bash

 

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

 

echo $name

 

read -p "please input your passwd:" -s passwd

echo -e "\n"

#换行符

echo $passwd

 

read -p "please input your sef [M/F]" -n 1 sex

echo -e "\n"

echo $sex

 

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

please input your name :cjx

cjx

please input your passwd:

 

123

please input your sef [M/F] M

 

M