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 变量名
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
[[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. 位置参数变量
这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。
[[email protected]]# vim canshu1.sh
[[email protected]]# chmod 755 canshu1.sh
[[email protected] sh]# ./canshu1.sh
例题2
#!/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