变量及shell编程

编程能力:

脚本编程

编程语言:机器语言,汇编语言,高级语言

高级语言:

静态语言:编译型语言

不需要借助额外的二进制,需要一个编译器,直接转换为二进制运行的。

强类型(变量):变量在使用前, 必须事先声明,甚至还需要初始化

关键字:

事先转换成可执行格式

c、c++、java、c#

动态语言:解释型语言 on the fly

弱类型语言:变量随时(用时)声明,不区分类型

边解释边执行

asp asp.net php shell python perl

面向过程:shell ,c,perl,

面积对象:java,python,perl,c++

变量类型:直接决定了变量的储存格式,用来确定数据的存储格式和长度

字符

数值

时期

真假型

逻辑运算:与(乘)、或、非、异或

1:真

0:假

1&0=0

0&1=0

0&0=0

1&1=1

或:只一一个为真就为真,同时为假就为假

非:!真=假 !假=真

异或:操作数相同者为假, 不同者为真,相同者为零,否者为1

与:只要有一个为假,结果为假

或:只要有一个为真,结果为真

整形

浮点型 11.23 1.123*10^1 | 0.1123*10^2

变量:内存空间,命名的内存空间,

变量名称:

1、只能包含字母,数字,下划线,并且不能数字开头。

2、不应该跟系统中已有的环境变量重名。

3、最好做到见名知义

内存:编址的存储单元

进程:

Bash变量类型:

引用变量:${VARNAME},默认{}可以省略,例:

ANIMAL=pig

echo "There are some ${ANIMAL}s."

1、环境变量:

作用域为当前shell进程及其子进程

exprot VARNAME=VALUE "导出"

脚本在执行时使用时会启动一个子shell进程

命令行启动的脚本会继承当时shell环境变量;

系统自动执行的脚本(非命令行启动)就需要自我定义需要的各环境变量

2、本地变量(局部变量)

bash:进程的变量

VARNAME=VALUE,本地变量,作用域为整个bash进程有用;

local VARNAME=VALUE,局部变量,作用域为当前代码段

3、位置变量

$1,$1,$2......

4、特殊变量(Bash内置的,也称系统变量)

是为了保存特殊数据的,例:$?:上一个命令的执行状态返回值;

程序执行结果

程序状态返回代码(0-255)

0:正确执行

1-255:错误执行,1,2,127系统预留:

撤消变量:

unset VARNAME

查看当前shell中变量:

set (包括环境变量和本地变量)

查看当前shell中的环境变量:

printenv

env

export

一个变量对应多个值:

ANIMAL=pig:dog:goat 或者:ANIMAL=$ANIMAL:pig

输出重定向:

>

>>

2>

2>>

&> 同时重定向

/dev/null

id student &> /dev/null

脚本:命令的堆砌,按实际需要,结合命令流程控制机制实现的源程序

#!/bin/bash

#注释行,不执行

Bash中如何实现条件判断?

条件测试类型:

1、整数测试

2、字符测试

3、文件测试

条件测试的表达式:

[ expression ]

[[ expression ]]

test expression

整数比较:

需要两个操作数

-eq:测试两个整数是否相等,比如:$A -eq $B

[ $A -eq $B ]

-ne:测试两个整数是否不等,不等为真,相等为假

-gt:测试一个数是否大于另一个数,大于为真,否则为假

-lt:测试一个数是否小于另一个数,小于为真, 否则为假

-ge:大于或

-le:小于或等于

命令间的逻辑关系:

逻辑与:&& id user1 &> /dev/null && echo "hello user1"

第一个条件为假时,第二个条件不用判断,最终结果已经有了。

第一个条件为真时,第二个条件必须得判断

逻辑或:||

!id user6 && useradd user6 前面为假就不执行,为真就执行

id user6 || useradd user6 如果前面为真就不执行,为假就执行

如果用户存在,就显示用户已存在,否则就添加此用户:

id user1 && echo "use1 exists" || useradd user1

如果用户不存在,就添加,否则显示其已经存在

! id user1 && useradd user1 || echo "user1 exists"

如果用户不存在,添加并且给密码,否则,显示其已经存在;

!id user1 && useradd user1 && echo "user1" | passwd --stdin user1 || echo "user1 exists"

例:

#!/bin/bash

!id user1 &> /dev/null && useradd user1 && echo "user1" | passwd --stdin user1 &> /dev/null || echo ""user1 exists."

!id user2 &> /dev/null && useradd user2 && echo "user2" | passwd --stdin user2 &> /dev/null || echo ""user2 exists."

!id user3 &> /dev/null && useradd user3 && echo "user3" | passwd --stdin user1 &> /dev/null || echo ""user3 exists."

USERS=`wc -l /etc/passwd | cut -d‘‘ -f1

echo "$USERS users"

#!/bin/bash

NAME=user1

USERID=`id -u $name`

[ $USERID -eq 0 ] && echo "This is root" || echo "This is not root"

条件判断,控制结构

单分支if语句:

if判断条件;then

statement1

statement2

...

fi

例:

#!/bin/bash

NAME=user1

if id $NAME &> /dev/null;then

ehco "$NAME exists."

fi

双分支的if语句:

if 判断条件;then

statement1

statement2

...

else

statement1

statement2

...

fi

例:

#!/bin/bash

NAME=user1

if id $NAME &> /dev/null;then

ehco "$NAME exists."

else

echo "$NAME not exist"

fi

#!/bin/bash

NAME=root

if [ `id -u $NAME`  -eq 0 ]; then

echo "This is Admin"

else

echo "This is not Admin"

fi

时间: 2024-10-11 11:06:32

变量及shell编程的相关文章

Linux学习之路-Shell编程

Shell的编程 Bash是用得最广泛的shell,是大多数Linux 系统的缺省 shell.Bourne Again shell (bash), 正如它的名字所暗示的,是Bourne shell 的扩展.bash 与Bourne shell 完全向后兼容,并且在 Bourne shell 的基础上增加和增强了很多特性.bash 也包含了很多 C 和 Korn shell 里的优点.bash 有很灵活和强大的编程接口,同时又有很友好的用户界面. 下面具体来介绍bash. Bash语法基本介绍

第二章 Shell编程之变量

Shell编程之变量 一 Bash变量与变量分类 Bash是Linux中的标准Shell,因此经常称Bash为Shell. 1. 变量命名规则 变量名可以由字母.数字.下划线组成,但必须以字母与下划线开头: 变量名的长度不能超过255个字符: 变量名在有效范围必须唯一: 在Bash中,变量的默认类型都字符串型: 2. 变量按照存储类型分类 默认类型是字符串型. 字符串型,赋值时单双引号皆可: 整形: 浮点型: 日期型: 二 用户自定义变量 变量名与变量值都是用户自定义的,就是说可以由用户控制修改

《跟老男孩学Linux运维之shell编程实战》-第二章 shell变量的核心基础

这篇文章主要讲解 shell变量的核心基础. 1.变量是什么? 变量是什么?可能有好多人不明白,简单地说,变量就是用一个固定的字符串(也可能是字符.数字等的组合)代替更多.更复杂的内容,该内容里可能还会包含变量.路径.字符串等其他的内容. 变量的赋值方式为:先写变量名称,紧接着是"="这个字符,最后是值,中间无任何空格(变量的内容一般要加双引号,以防止出错,特别是当值里的内容之间有空格时). 如何打印变量?通过echo命令加上$变量名 打印变量的值: 例如:定义变量和打印变量: [[e

全新 Mac 安装指南(编程篇)(环境变量、Shell 终端、SSH 远程连接)

注:本文专门用于指导对计算机编程与设计(尤其是互联网产品开发与设计)感兴趣的 Mac 新用户,如何在 Mac OS X 系统上配置开发与上网环境,另有<全新 Mac 安装指南(通用篇)>作为本安装指南的基础篇. 在 <为什么说每个程序员都应该有台Mac电脑>一文中我有提到 Mac 系统的命令行环境与 Linux 系统十分类似,这是因为 Mac OS X 的操作系统内核是 Darwin,它和 Linux 一样是一种优秀的类 Unix 系统.掌握 Linux Shell 命令行的使用,

Shell编程 之 变量设置时的不同模式

未命名 #!/bin/bash#======================================================#文件:var_test.sh#作者:daojoo, [email protected]#作用:测试变量设置时的不同模式#版本:1.0#日期:2012年03月09日 星期五 10时41分39秒#======================================================   #---------------变量设置时的不同模式

Linux Shell编程变量赋值和引用

我们可以使用任意一种文字编辑器,比如gedit.kedit.emacs.vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行): #!/bin/sh ... 注意:最好使用“!/bin/bash”而不是“!/bin/sh”,如果使用tc shell改为tcsh,其他类似. 符号#!用来告诉系统执行该脚本的程序,本例使用/bin/sh.编辑结束并保存后,如果要执行该脚本,必须先使其可执行: chmod +x filename 此后在该脚本所在目录下,输入 ./filename 即可

shell编程学习笔记之特殊变量($0、$1、$2、 $?、 $# 、[email&#160;protected]、 $*)

特殊变量($0.$1.$2. $?. $# .[email protected]. $*) shell编程中有一些特殊的变量可以使用.这些变量在脚本中可以作为全局变量来使用. 名称 说明 $0 脚本名称 $1-9 脚本执行时的参数1到参数9 $? 脚本的返回值 $# 脚本执行时,输入的参数的个数 [email protected] 输入的参数的具体内容(将输入的参数作为一个多个对象,即是所有参数的一个列表) $* 输入的参数的具体内容(将输入的参数作为一个单词) [email protected

《跟老男孩学Linux运维之shell编程实战》-第四章 变量的数值计算

本文讲解shell编程中变量的数值计算. 1.常见的算术运算符: 提示: 此处对于我自己来说++.--比较难理解,之前一看到脚本中有这些符号,就看不懂了,所以在此举例说明一下: [[email protected] ~]# a=10                  ==>定义变量a[[email protected] ~]# echo $((a++)) ==>如果a在运算符++或--的前面,那么输出整个表达式时,会输出a的值, 此前定义的变量a为10,所以此处的值为10.10[[email 

shell编程(一)---变量

变量是内存空间,通过变量名引用变量的时候,称为命名的内存空间. 定义一个变量,就是给变量分配一段编址的内存空间,给变量赋值,就是往内存空间里面填充数据. 变量类型:事先定义好数据的存储格式和长度.不同的数据类型所占用的存储空间和存储格式也不一样. 变量类型如: 字符类型. 数值类型.分为整型.浮点型 日期和时间型. 布尔型. 逻辑运算:与(and).或(or).非 and:&&    只要有一个为假,结果就为假.只有两者都为真,结果才为真. or:||     只要有一个为真,结果就为真.