linux判断数据类型,2016-3-6 linux基础学习13——条件判断、文件测试、bash变量类型...

条件判断,控制结构:

单分支if语句

if 判断条件;then(then放下一行可省略“,”)

statement1

statement2

...

fi

双分支的if语句

if 判断条件;then

statement1

statement2

...

else

statement4

statement5

...

fi

多分支的if语句

if 判断条件1;then

statement1

...

elif 判断条件2;then

statement2

...

elif 判断条件3;then

statement3

...

else

statement4

...

fi

课堂1:写一个脚本

判断当前系统上是否有用户的默认shell为bash

如果有,就显示有多少个这类用户,否则,就显示没有这类用户

【提示】

1.“引用”一个命令的执行结果,要使用命令引用,比如:RESAULTS=`wc -l /etc/passwd | cut -d: -f1`

2.使用一个命令的执行结果,要直接执行此命令,一定不能引号,比如:if id user1一句话中的id命令就不能加引号

3.如果想把一个命令的执行结果赋值给某些变量,要使用命令引用,比如USERRID=·id -uuser1`

4.如果想把一个命令的执行状态结果保存下来,并作为执行成功与否的判断条件,则需先执行此命令,而后引用其状态结果,如

id -u user1

RETVAL=$?

此句绝不可以写成RESVAL=`id -u user1`

77c8a593af4ba81e2b072274aa5d2a3b.gif

e56d6cea0a8d31be29adf2395675f133.gif

课堂2:写一个脚本

判断当前系统上是否有用户的默认shell为bash

如果有,就显示其中一个的用户名,否则,就显示没有这类用户

8b895452c4ca623fa5eb78c06b10e38e.gif

237c1cad087a0eed6771208aee7a3f4b.gif

8cd0596c7fe430b53af72201fc9bac6c.gif

课堂3:写一个脚本

判断/etc/inittab中是否有空白行

如果有,则显示其空白行数,否则,显示没有空白行

d10c3a75eb3a01f20521f23a67263392.gif

课堂4:写一个脚本

给定一个用户,判断其UID与GID是否一样

如果一样,就显示此用户为“good guy”;否则,就显示此用户为“bad guy”

(进一步要求:不使用id命令获取其id号)

c2a072ff2454b7ede11e9eaf504a4d2c.gif

8bd22cc461bc548538dff8e7112efd0c.gif

f0313277755f77339387d847ce159812.gif

ae8bee86f8f895ba2e33c2072b94f194.gif

课堂5:写一个脚本

给定一个用户,获取其密码警告期限

而后判断用户最近一次修改密码时间距今天是否已经小于警告期限

如果小于,则显示“warning”,否则,就显示"OK"

【提示】算术运算的方法$[$A-$B]:表示变量A的值减去变量B的值的结果

圆整:丢弃小数点后的所有内容

719226393165a1c1b90ae0cb6bd16311.gif

ef54707d37a2a73c7fe112917ccf76a1.gif

315a853a73f08e9553f0b4a28b3b440b.gif

课堂6:写一个脚本

判定命令历史中历史命令总条目是否大于1000,如果大于,显示“Some command will gone.”,否则显示“OK”.

(history 只保留最近1000个命令,虽然能看见大于1000个命令)

fe5a54e36055b178ada60930b803d9d1.gif

cec6ff0bdd641a4f808ef9b3e88eda0f.gif

shell中如何进行算术运算

A=3

B=4

1,let 算术运算表达式

let C=$[$A+$B]

2,$[算术运算表达式]

C=$[$A+$B]

3,$((算术运算表达式))

C=$(($A+$B))

4,expr 算术运算表达式,表达式中各操作数及运算符之间要有空格,而且要使用命令引用

C=`expr $A + $B`

6eb66fc38e861569a1488f3e9550e88c.gif

退出脚本:exit(1-255都可)

例如:

exit 8

exit #:

如果脚本没有定义退出状态,那么最后执行的一条命令的退出码即为脚本的退出状态码

测试脚本是否有语法错误:      bash -n

单步执行,显示每一步命令执行结果:  bash -x

3bc42f4baf3d2c6ca988225179f8c6a9.gif

b0b0217d91d781c40875c98c833c3ac6.gif

文件测试:[ -e /etc/passwd ]

-e FILE:测试文件是否存在

-f FILE:测试文件是否为普通目录

-d FILE:测试指定路径是否为目录

-r FILE:测试当前用户对指定文件是否有读取权限

-w FILE:测试当前用户对指定文件是否有写权限

-x FILE:测试当前用户对指定文件是否有执行权限

课堂7:写一个脚本

给定一个文件,如果是普通文件,就显示之

如果给定一个目录,亦显示之

否则,此为无法识别的文件

2c70c102771277a937a0a7f58ee5bf2b.gif

ef6444d4fccf3ae92180066873eeebf7.gif

5c7314fb02ef9ab0070fd21887349e43.gif

bash变量类型:

环境变量

本地变量

位置变量

特殊变量

本地变量:

VARNAME=VALUE:作用域为整个bash进程

局部变量:

local VARNAME=VALUE:作用域为当前代码段

环境变量:作用域为当前shell进程及其子进程:

export VARNAME=VALUE

VARNAME=VALUE

export VARNAME

"导出"

位置变量:

./filetest.sh  /etc/fsttab  /etc/inittab

$1: /etc/fsttab

$2: /etc/inittab

……

f075ea71c3d617880ed6ddf2de4e5ae0.gif

a157608b6b39d77a11b3805ae19bd0de.gif

a4c09742ee041f5363a8d6997355d0b5.gif

7beed10805f1e4f6a49283e185d853b3.gif

66dc530c369d9ee0fef22682949af8b6.gif

shift:默认踢去第一个参数(第二个参数变成第一个参数)

shift n :踢掉n个参数

shift 2(第三个参数变成第一个参数)

477d7e28b5ed75d27fd39d48e083c34b.gif

a9236bce5f5b2571771ebc1396456bed.gif

1837f4e766c2d6bf15c978e94b1e987c.gif

472c4a3cfef67e1b0335351c0e5b3bd7.gif

特殊变量:

$? : 上一个命令的执行状态返回值

程序执行,有两类返回值

程序执行结果

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

0:正确执行

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

$#:参数的个数

如果不是大于等于1,就要加参数(提示用户加参数)

00a60bfd86616089a206f06c48b118be.gif

9b011c5edf38759928774344120d4b2b.gif

课堂8,写一个脚本

给脚本传递两个参数(整数)

显示此两者之和,之积

56f29f7e83fb8b703738b7ca6ba73265.gif

de1374887ae6e41aeaeaf12d93de1067.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值