您的位置:首页 > 运维架构 > Shell

慕课:Linux达人养成计划I—Shell变量和运算符

2017-09-04 22:54 661 查看
2017年9月4日 22:53:11

Bash变量

[align=justify]Shell与其他语言的对比:[/align]

[align=justify]其他语言主要实现功能[/align]

脚本语言:所见即所得,写完就能看到结果。坏处是:程序边执行边编译,所以会很慢。

[align=justify]Shell主要用于简化管理操作[/align]

[align=justify]Bash变量与变量分类[/align]
[align=justify]什么是变量:[/align]
[align=justify]变量是计算机内存的单元,其中存放的值可以改变。[/align]
[align=justify]变量让你你呢挂钩把程序中使用的每一段数据都赋给一个简短、易于记忆的名字,因此它们十分有用。[/align]
[align=justify]变量的命名规则:[/align]

[align=justify]变量名必须以字母或下划线打头,名字中间只能由字母、数字和下划线组成。[/align]

[align=justify]变量名的长度不能超过255[/align]

[align=justify]变量名在有效范围内必须是唯一的[/align]

[align=justify]在Bash中,变量的默认类型是字符串类型[/align]

[align=justify]变量的分类:[/align]

[align=justify][b]用户自定义变量。[/b]变量自定义的[/align]

[align=justify][b]环境变量:[/b]这种变量主要保存的是和系统操作环境相关的数据。变量可以自定义,但是对系统生效的环境变量名和变量作用是固定的。[/align]

提示符就属于环境变量。

[align=justify][b]位置参数变量[/b]:这种变量主要是用来向脚本当中传递参数或数据的。变量名不能自定义,变量作业是固定的。[/align]

[align=justify][b]预定义变量[/b]:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。也不能新增加,只能改值。[/align]

位置参数变量是预定义变量的一种。
[align=justify]用户自定义变量:[/align]
[align=justify]定义变量:[/align]
[align=justify]变量名称=变量值[/align]
[align=justify]=左右都没空格,加了空格,系统以为变量是命令[/align]
[align=justify]x=5[/align]
[align=justify]变量调用[/align]
[align=justify]echo $变量名[/align]
[align=justify] echo $x[/align]
[align=justify]x=5[/align]
[align=justify]y=6[/align]
[align=justify]z=$x+$y[/align]
[align=justify]echo $z[/align]
[align=justify] 结果:5+6[/align]
[align=justify]变量的叠加:[/align]
[align=justify]x=123[/align]
[align=justify]x=”$x”456 123456[/align]
[align=justify]x=${x}789 123456789[/align]
[align=justify]变量的查看:[/align]
[align=justify]set[/align]
[align=justify] 查询系统中所有正在执行变量[/align]
[align=justify] -u 使用之后,echo一个不存在的变量,会明确报错(默认无提示)。[/align]
[align=justify]unset 变量名 //删除变量[/align]
[align=justify]环境变量[/align]
[align=justify]环境变量是全局变量,用户自定义变量是局部变量。[/align]
[align=justify]用户变量只在当前的Shell中生效,环境变量在当前的Shell和这个Shell的所有子Shell中都生效。[/align]
[align=justify]pstree 查看进程树[/align]
[align=justify]环境变量:对系统生效的环境变量名和变量作用是固定的。[/align]
[align=justify]设置环境变量:[/align]
[align=justify]export 变量名=变量值[/align]
[align=justify]或者:[/align]
[align=justify]变量名=变量值[/align]
[align=justify]export 变量名[/align]
[align=justify]set 查看所有变量[/align]
[align=justify]env 查看环境变量[/align]
[align=justify]unset 删除变量,[/align]

在子shell中不能删父shell中定义的环境变量
[align=justify]环境变量可以自定义,但是对系统生效的环境变量名和变量作用是固定的。[/align]
[align=justify]常用环境变量[/align]
[align=justify]HOSTNAME 主机名[/align]
[align=justify]SHELL 当前shell[/align]
[align=justify]TERM 终端环境[/align]
[align=justify]HSITSIZE 历史命令条数[/align]
[align=justify]SSH_CLIENT 当前操作系统环境是用ssh链接的,[/align]

这里记录客户端的IP

远程登录的网址,端口等
[align=justify]SSH_TTY SSH链接的终端时pts/1[/align]
[align=justify]USER 当前登录的用户[/align]
[align=justify]PATH变量:系统查找命令的路径[/align]
[align=justify]echo $PATH 查看PATH环境变量[/align]
[align=justify]PATH=”$PATH”:/root/sh 增加PATH变量的值[/align]
[align=justify]PS1 定义当前操作系统的命令行提示符设置[/align]
[align=justify]\d 显示时间,格式为“星期 月 日”[/align]
[align=justify]\H 显示完整的主机名[/align]
\t 显示24小时制时间,格式为
“HH::MM::SS”
[align=justify]\A 显示24小时制时间,格式为 “HH::MM”[/align]
[align=justify]\u 显示当前用户名[/align]
[align=justify]\w 显示当前所在目录的完整名称[/align]
[align=justify]\W 显示当前所在目录的最后一个目录[/align]
[align=justify]\$ 提示符,如果是root,则为#,如果是普通用户则是$[/align]
[align=justify]命令 \[/align]
[align=justify]等待下一个命令,这个\是换行命令,由PS2定义。[/align]
[align=justify]Bash语系变量[/align]
[align=justify]locale 查询当前系统语系[/align]
[align=justify] LANG 定义系统主语系的变量,当前生效的[/align]
[align=justify] LC_ALL 定义整体语系的变量[/align]
[align=justify]locale -a | more 查看Linux支持的所有语系[/align]
[align=justify]df –h 统计分区大小[/align]
[align=justify]cat /etc/sysconfig/i18n 查询系统默认语系,[/align]

下次开机以后的系统环境
[align=justify]Linux中文支持[/align]
[align=justify]前提条件,正确安装的中文字体和中文语系[/align]
[align=justify] 如果有图形界面,可以正确支持中文显示。如果使用第三方远程工具,只要语系设定正确,可以支持中文显示。如果使用纯字符界面,必须使用第三方插件(如zhcon等)[/align]
[align=justify] [/align]
[align=justify]位置参数位置[/align]
[align=justify]$n n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要大括号,如${10}[/align]
[align=justify]$* 这个变量代表命令行中所以的参数,$*把所有的参数看成一个整体。[/align]
[align=justify]$@ 代表命令行中所有的参数,不过$@把每个参数区分对待[/align]
[align=justify]$# 代表命令行中所有参数的个数。[/align]
[align=justify]#!/bin/bash[/align]
[align=justify]num1=$1[/align]
[align=justify]num2=$2[/align]
[align=justify]sum=$(($num1+$sum2))[/align]
[align=justify]echo $sum[/align]
[align=justify]这样可以计算出,两个参数的合。中间的括号不加,会变成字符串相加。[/align]
[align=justify]#!/bin/bash 遍历打印1--4[/align]
[align=justify]for i in 1 2 3 4[/align]
[align=justify] do[/align]
[align=justify] echo $i[/align]
[align=justify] done[/align]
[align=justify]#!/bin/bash [/align]
for i in
”$*” //只会循环一次,一个整体直接打印

do
echo
“$i”
[align=justify] done[/align]
for y in
”$@” //循环多次,分别打印

do
echo
“$y”
[align=justify] done[/align]
[align=justify]预定义变量[/align]
[align=justify]$? 最后一次执行的命令的返回状态。如果这个变量值为0,证明上一个命令正确执行;如果非0,则证明没有正确执行。[/align]
[align=justify]$$ 当前进程的进程号(PID)[/align]
[align=justify]$! 后台运行的最后一个进程的进程号[/align]
[align=justify]&&和||就是判断的第一条命令的返回值,即 $?[/align]
[align=justify]ps aux | grep 2911 打印当前PID为2911的进程[/align]
[align=justify]$$如果写在脚本中,那么会打印脚本进程的PID[/align]
[align=justify]find / -name hello.sh & //&表示放在后台执行[/align]
[align=justify]接收键盘输入[/align]
[align=justify]read [选项][变量名][/align]
-p “提示信息”
: 在等待read输入时,输出提示信息。
[align=justify] -t 秒数 : read命令会一直等待用户输入,使用此选项可以指定等待时间[/align]
[align=justify] -n 字符数 :read值接收指定的字符数,就会直接执行,不会等待[/align]
[align=justify] -s :隐藏输入信息,适合于机密信息的输入。[/align]
[align=justify]#!/bin/bash[/align]
read -p “please input your name:”
name
[align=justify]echo $name[/align]
read -p “please input your passwd:
-s passwd

echo –e
“\n”
[align=justify]echo $passwd[/align]
[align=justify]Shell运算符[/align]
[align=justify]Shell变量的特点:[/align]

弱类型:默认情况下是字符串类型。
[align=justify]declare声明变量类型[/align]
[align=justify]declare [+/-][选项] 变量名[/align]

[align=justify]给变量设定类型[/align]

+ 给变量取消类型属性

-a 将变量声明为数组类型

-i 将变量声明为整数型

-x 将变量声明为环境变量

-r 将变量声明为只读变量

-p 显示指定变量的被声明的类型
[align=justify]把变量声明为数值型[/align]
[align=justify]aa=11[/align]
[align=justify]bb=22[/align]
[align=justify]declare –i cc=$aa+$bb //声明变量cc的类型是整数型,值为aa和bb的和[/align]
[align=justify]如果不用declare,那么cc是 11+22的字符串[/align]
[align=justify]声明数组变量[/align]
[align=justify]定义数组[/align]
[align=justify]movie[0]=zp[/align]
[align=justify]movie[1]=tp[/align]
[align=justify]declare -a movie[2]=live[/align]
[align=justify]查看数组[/align]
[align=justify]echo ${movie} 只会显示第一个[/align]
[align=justify]echo ${movie[2]}[/align]
[align=justify]echo ${movie[*]}[/align]
[align=justify]声明环境变量[/align]
[align=justify]declare –x test=123[/align]
[align=justify]和export作用相似,但其实是declare命令的作用[/align]
[align=justify]declare -p[/align]
[align=justify]这样会列出所有的环境变量。[/align]
[align=justify]如果把变量换成只读,那么就完全不能修改,+r修改都不行。要是临时的还好,重启可以。要是在配置文件里面有,那只能把那段话删掉,然后重启。[/align]
[align=justify]Shell数值运算方法[/align]
[align=justify]expr或let数值运算工具[/align]
[align=justify]aa=11[/align]
[align=justify]bb=22[/align]
[align=justify]dd=$(expr $aa + $bb)[/align]
[align=justify]注意加号的左右,必须有空格,let也一样。[/align]
[align=justify]不加空格还会变成字符串[/align]
[align=justify]$((运算式))或者$[运算式][/align]
[align=justify]ff=$(($aa+$bb))[/align]
[align=justify]gg=$[$aa+$bb][/align]
[align=justify]Shell变量测试 通用度不高,只针对Shell,但不方便。[/align]
[align=justify]变量测试在脚本优化时使用。[/align]



[align=justify]unset 变量名 删除变量名[/align]
[align=justify]变量名=“” 变量存在,但是变量为空,没有值[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: