30天Python基础(环境变量和shell编程)

1. 环境变量
环境变量⽤来存储⼯作环境信息的变量,主要分为系统系统环境变量和⽤户级环境
变量

  • 系统环境变量
常⻅的系统环境变量 :
 PATH 指令的搜索路径
 HOME ⽤户的⼯作⽬录
 LOGNAME ⽤户的登录名
 PS1 命令提示符:root⽤户是#,普通⽤户是$
 PS2 附属提示符默认是>
 SHELL 当前系统shell类型
 USER 当前登录账号
#使⽤系统变量
echo $PATH #显示单个全局变量,注意使⽤全局变量,必须加$
export name='hello' #设置新的全局变量
#系统级变量
这类变量对系统内的所有⽤户都⽣效,所有⽤户都可以使⽤这类变量。
这类变量在/etc/profile⽂件中设置,只有root⽤户才能设置
vim /etc/profile
export a=100
:wq #存盘退出,这个时候a不会⽴即⽣效,应该是有
source /etc/profile
#单⽤户级环境变量
在⽤户主⽬录内有三个⽂件 ~/.bash_profile、~/.bashrc和~/.profile 在这
个⽂件中定义变量只针对当前⽤户,添加⽅式同系统级全局变量

环境配置⽂件的区别
读取顺序:① /etc/profile、② ~/.bash_profile、③ ~/.bashrc、④/etc/bashrc。

/etc/profile:此⽂件为系统的每个⽤户设置环境信息,系统中每个⽤户
登录时都要执⾏这个脚本,如果系统管理员希望某个设置对所有⽤户都⽣
效,可以写在这个脚本⾥,该⽂件也会从/etc/profile.d⽬录中的配置⽂件
中搜集shell的设置。
② ~/.bash_profile:每个⽤户都可使⽤该⽂件设置专⽤于⾃⼰的shell信
息,当⽤户登录时,该⽂件仅执⾏⼀次。默认情况下,他设置⼀些环境变
量,执⾏⽤户的.bashrc⽂件。
③ ~/.bashrc:该⽂件包含专⽤于⾃⼰的shell信息,当登录时以及每次打开
新shell时,该⽂件被读取。
④ /etc/bashrc:为每⼀个运⾏bash shell的⽤户执⾏此⽂件,当bash
shell被打开时,该⽂件被读取。

30天Python基础(环境变量和shell编程)_第1张图片

  • 设置PATH环境变量
echo $PATH #x显示全局PATH环境变量
#1 临时设置
PATH=$PATH:/home/csl #将/home/csl添加到系统环境变量,只针对当前登录
有效
#2 对所有⽤户永久有效
vi /etc/profile
export PATH=$PATH:/usr/local/sysbench/bin
source /etc/profile
#3.对登录⽤户有效
# vi ~/.bashrc 在⾥⾯加⼊:
export PATH=$PATH:/usr/local/mysql/bin
source ~/.bashrc

2. shell编程
什么是shell
shell是⼀个命令解释器,将⽤户输⼊的命令解释给操作系统内核。
Shell既是⼀种命令语⾔,⼜是⼀种程序设计语⾔。作为命令语⾔,它类似于
Windows下的cmd.exe,可以交互式地解释和执⾏⽤户输⼊的命令;作为程序设计
语⾔,它定义了各种变量和参数,并提供了许多在⾼级语⾔中才具有的控制结构,
但是Shell是不需要进⾏编译的,它是从脚本程序中⼀⾏⼀⾏的读取并执⾏命令。
Shell有两种执⾏命令的⽅式:交互式(Interactive),⽤户输⼊⼀条命令,Shell
就解释执⾏⼀条;批处理(Batch),⽤户事先写⼀个Shell脚本(Script),其中有很
多条命令,让Shell⼀次把这些命令执⾏完,⽽不必⼀条⼀条地敲命令。
常⻅的shell类型
Linux 的 Shell 种类众多,常⻅的有:
(1) BourneShell(sh):是由AT&T Bell实验室的 Steven Bourne为AT&T的Unix开
发的,它是Unix的默认Shell,也是其它Shell的开发基础。Bourne Shell在编程⽅
⾯相当优秀,但在处理与⽤户的交互⽅⾯不如其它⼏种Shell。
(2) BourneAgain Shell (即bash):是⾃由软件基⾦会(GNU)开发的⼀个Shell,它
是Linux系统中⼀个默认的Shell。Bash不但与Bourne Shell兼容,还继承了C
Shell、Korn Shell等优点。
(3) ash:ash Shell是由Kenneth Almquist编写的,是Linux 中占⽤系统资源最少
的⼀个⼩Shell,它只包含24个内部命令,因⽽使⽤起来很不⽅便。
(4) CShell(csh):是加州伯克利⼤学的Bill Joy为BSD Unix开发的,共有52个内部
命令,与sh不同,它的语法与C语⾔很相似。它提供了Bourne Shell所不能处理的
⽤户交互特征,如命令补全、命令别名、历史命令替换等。但是,C Shell与
BourneShell并不兼容。该Shell其实是指向/bin/tcsh这样的⼀个Shell,也就是
说,csh其实就是tcsh。
(5) KornShell(ksh):是AT&T Bell实验室的David Korn开发的,共有42 条内部命
令,它集合了C Shell和Bourne Shell的优点,并且与Bourne Shell向下完全兼容。
Korn Shell的效率很⾼,其命令交互界⾯和编程交互界⾯都很好。
(6) zch:是Linux 最⼤的Shell之⼀,由Paul Falstad完成,共有84 个内部命令。如
果只是⼀般的⽤途,没有必要安装这样的Shell。

  • 可以使⽤系统变量SHELL查看当前使⽤的shell:echo $SHELL
  • 也可以到/etc/shells⽂件⾥查看系统可以使⽤的shell

shell的交互⽅式
命令⾏
脚本执⾏
编写脚本,⽂件后缀名⼀般为.sh
⽂件必须以#!/bin/bash开头
添加脚本的可执⾏权限 chmode +x 脚本名
执⾏脚本:

  • 在当前⽬录⾥执⾏: ./脚本名
  • 在其他⽬录中执⾏:使⽤绝对路径
#!/bin/bash
#使⽤#注释,第⼀⾏是特殊存在
cd /
ls -al
:wq #存退出盘
chmod a+x 1.sh #修改权限,添加可执⾏权限
./1.sh #执⾏当前⽬录下的shell脚本

** 定义变量**
变量类型

  • 局部变量:只在本shell中使⽤
  • 环境变量 : 整个系统使⽤,⼀般⼤写

局部变量的使⽤

#1 定义局部变量
a=10 #注意等号两边不要留空格,否则会看成多个命令
b=$a
#2显示局部变量
echo $b
echo ${b}
echo "a=$a" #双引号中的变量解释
#3.销毁变量
unset a #⼲掉⼀个变量,不要带$符 #注意反引号,反引号引起来的是命令,可以执⾏,将执⾏结果给变量
d=`date`
注意:等号两边不要留空格

位置变量

$0 表示脚本的名称
$1-$9表示传递给脚本的的参数
#test.sh脚本
#!/bin/bash
echo 'hello world'
echo $0
echo $1 $2
执⾏输出:
hello world
./test.sh
1 2

特殊变量

$#表示传递给脚本的参数个数
$*表示传递给脚本的所有参数
$?表示命令的返回值,返回值为0表示成功执⾏,否则命令执⾏错误

常量

readonly a=10 #定义常量
echo $a
a='ll' #-bash: name: 只读变量,不能修改

** 引号**

  • 双引号中解释变量,解释转义字符
  • 单引号不解释变量、不解释转义字符
  • 反引号会执⾏当中的内容
  • 特殊字符要⽤反斜线转义:& * ?| $ ^
    ** 字符串**
  • 计算字符串⻓度 ${#字符串名}
  • 提取⼦串: ${字符串名:start:len} 从下标为start开始,提取len个字符

运算
数学运算

shell默认所有变量都是字符串,执⾏数学计算需要⽤[]括起来
a=100
echo $[$a+10]
echo $[$a / 2]
echo $[$a * 2]
echo $[$a - 80]
echo $[10 % 2]
echo $((3 + 5))
echo $((10/2))
echo $((10/3)) #3 整除
echo $((10*3))
echo $((10%3))
let a=5+6
echo $a
let a+=10
echo $a
echo `expr 3 + 5` #也可以⽤expr进⾏计算

关系运算

运算符 说明 举例
-eq ==,相等返回 true。 [ $a -eq $b ] 返回 false。
-ne !=,不相等返回 true。 [ $a -ne $b ] 返回 true。
-gt > ,如果是,则返回 true。 [ $a -gt $b ] 返回 false。
-lt <,如果是,则返回 true。 [ $a -lt $b ] 返回 true。
-ge >= ,如果是,则返回 true。 [ $a -ge $b ] 返回 false
-le <= ,如果是,则返回 true [ $a -le $b ] 返回 true。
  • 逻辑运算
运算符 说明 举例
&& 逻辑的 AND [[ $a -lt 100 && $b -gt 100 ]] 返回 false
|| 逻辑的 OR [[ b -gt 100 ]] 返回 true
  • 字符串判断
    30天Python基础(环境变量和shell编程)_第2张图片

  • ⽂件判断
    30天Python基础(环境变量和shell编程)_第3张图片
    分⽀语句
    if-else

a=100
if [ $a -gt 90 ];then
 echo "a>90"
else
 echo "a<=90"
fi

循环语句

for 变量 in 列表
do
 command1
  command2
 ...
 commandN
done
示例:
for i in 1 2 3 4 5;do
 echo $i
done
#从命令读取值
for line in `cat 1.txt`;do
 echo $line
done
#读取⽬录列表
for file in ~/*;do
 echo $file;
done

while

#当型循环
while condition
do
 command
done
sum=0
i=0
while [ $i -lt 10];do
 let sum+=$i
 let i+=1
done

** 函数**

  • 函数必须先定义后使⽤
#函数定义
test()
{
 echo "简单函数" }#函数调⽤
test

你可能感兴趣的:(30天Python基础(环境变量和shell编程))