菜鸟学Linux 第016篇笔记 bash脚本之文件测试,变量类型

简介:

菜鸟学Linux 第016篇笔记 bash脚本之文件测试,变量类型






测试方法

[ EXPression ]  命令测试法

` EXEpression ` 关键字测试

test EXEression


bash中常用的条件测试三种:

整数测试:(双目测试)

-gt 大于

-le 小于等于

-ne 不等于

-eq 等于

-ge 大于等于

-lt 小于

e.g.

INT1=63

INT2=77

[ $INT1 -eq $INT2 ]

[[ $INT -eq $INT2 ]]

test $INT1 -eq $INT2


文件测试:(单目测试)

-e FILE; 测试文件是否存在(existed)

-f file; 测试文件是否为普通文件;

-d FILE; 测试指定路径是否为目录(directory);

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

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

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


[ -e /etc/inittab ]

[ -x /etc/rc.d/rc.sysinit ]



多分支的if语句:

if 判断条件1;then

statement1

...

elif 判断条件1;then

statement2

...

elif 判断条件n;then

statementn

...

else

statement

...

fi

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

bash -n 脚本 含义:查脚本有无语法错误

bash -x 脚本 含义:逐步执行

定义脚本退出状态码

exit: 退出脚本

exit #

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

即为脚本退出状态码。


bash变量的类型:

本地变量(局部变量) 作用域:当前shell进程

环境变量  作用域:当前shell进程,即其子shell

位置变量 $1 $2 $3 ...

shift n 移位到第n+1个参数;

./script /etc/fstab /etc/inittab

$1 /etc/fstab 表示脚本第一个参数

$2 /etc/inittab 表示脚本第二个参数

特殊变量

$? 上一条命令的退出状态码

$# 参数的个数

$* 参数列表

$@ 参数列表

小练习:写脚本

script1

1、给定一个文件:

如果是一个普通文件,则显示之;

如果是一个目录,亦显示之;

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

script2 

能接受一个参数(文件路径)

判定:此参数如果是一个存在的文件,就显示OK;

否则就显示“No such file."

script3

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

2、显示此两者之和,之积;

key:

script1 

#!/bin/bash

#

FILE=/etc/rc.xxx


if [ ! -e $FILE ]; then 

echo "No such file."

exit 6

fi


if [ -f $FILE ]; then

echo "Common file."

elif [ -d $FILE ]; then 

echo "Directory."

else

echo "Unrecognize file."

fi


script2

#!/bin/bash

#

FILE=$1


if [ $# -eq 0 ]; then

echo "You need to input a parameter."

exit 2

fi



if [ -e $FILE ]; then

echo "OK"

else 

echo "No such file."

fi


script3

#!/bin/bash

#

if [ $# -ne 2 ]; then

echo "Usage: command ARG1 ARG2."

exit 1

fi

echo "The sum is $[$1+$2]."

echo "The xj is $[$1*$2]."

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1862941如需转载请自行联系原作者


Winthcloud

相关文章
|
2月前
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
134 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
2月前
|
运维
【运维基础知识】用dos批处理批量替换文件中的某个字符串(本地单元测试通过,部分功能有待优化,欢迎指正)
该脚本用于将C盘test目录下所有以t开头的txt文件中的字符串“123”批量替换为“abc”。通过创建批处理文件并运行,可实现自动化文本替换,适合初学者学习批处理脚本的基础操作与逻辑控制。
151 56
|
2月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
97 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
2月前
|
安全 Linux 网络安全
Kali 渗透测试:利用HTA文件进行渗透攻击
Kali 渗透测试:利用HTA文件进行渗透攻击
|
2月前
|
Devops 关系型数据库 大数据
1000个开源免费的bash脚本合集
【10月更文挑战第4天】
|
3月前
|
Java C++
代码文件间重复性测试
本文介绍了如何使用代码相似性检测工具simian来找出代码文件中的重复行,并通过示例指令展示了如何将检测结果输出到指定的文本文件中。
|
2月前
|
安全 Linux 网络安全
Kali渗透测试:自动播放文件攻击
Kali渗透测试:自动播放文件攻击
|
4月前
|
Shell 数据处理
Bash 中检查文件是否包含字符串
【8月更文挑战第27天】
44 5
|
4月前
|
Unix Shell Linux
在Linux中,什么是Bash脚本,并且如何使用它。
在Linux中,什么是Bash脚本,并且如何使用它。
|
18天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
52 3