菜鸟学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

相关文章
|
4天前
|
机器学习/深度学习 算法 异构计算
m基于FPGA的多通道FIR滤波器verilog实现,包含testbench测试文件
本文介绍了使用VIVADO 2019.2仿真的多通道FIR滤波器设计。展示了系统RTL结构图,并简述了FIR滤波器的基本理论,包括单通道和多通道的概念、常见结构及设计方法,如窗函数法、频率采样法、优化算法和机器学习方法。此外,还提供了Verilog核心程序代码,用于实现4通道滤波器模块,包含时钟、复位信号及输入输出接口的定义。
20 7
|
24天前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
78 1
|
27天前
|
Linux Shell Python
Linux执行Python脚本
Linux执行Python脚本
27 1
|
1月前
|
传感器 算法 计算机视觉
基于肤色模型和中值滤波的手部检测算法FPGA实现,包括tb测试文件和MATLAB辅助验证
该内容是关于一个基于肤色模型和中值滤波的手部检测算法的描述,包括算法的运行效果图和所使用的软件版本(matlab2022a, vivado2019.2)。算法分为肤色分割和中值滤波两步,其中肤色模型在YCbCr色彩空间定义,中值滤波用于去除噪声。提供了一段核心程序代码,用于处理图像数据并在FPGA上实现。最终,检测结果输出到"hand.txt"文件。
|
1月前
|
算法 异构计算
m基于FPGA的电子钟verilog实现,可设置闹钟,包含testbench测试文件
该文介绍了基于FPGA的电子钟设计,利用Vivado2019.2平台进行开发并展示测试结果。电子钟设计采用Verilog硬件描述语言,核心包括振荡器、分频器和计数器。时间显示为2个十进制格式,闹钟功能通过存储器和比较器实现,当当前时间等于设定时间时触发。文中给出了Verilog核心程序示例,展示了时钟信号、设置信号及输出的交互。
27 2
|
1月前
|
网络协议 Shell Linux
【Shell 命令集合 网络通讯 】⭐⭐⭐Linux 测试与目标主机之间的网络连接ping 命令 使用指南
【Shell 命令集合 网络通讯 】⭐⭐⭐Linux 测试与目标主机之间的网络连接ping 命令 使用指南
43 1
|
1天前
|
算法 计算机视觉 异构计算
基于FPGA的图像累积直方图verilog实现,包含tb测试文件和MATLAB辅助验证
该内容展示了FPGA实现图像累积直方图的算法。使用Vivado2019.2和matlab2022a,通过FPGA的并行处理能力优化图像处理。算法基于像素值累加分布,计算图像中像素值小于等于特定值的像素个数。核心代码为`test_image`模块,读取二进制图像文件并传递给`im_hist`单元,生成直方图和累积直方图。
|
3天前
|
Linux Shell Android开发
自动化脚本之GPIO/LED相关适用于Android/Linux
自动化脚本之GPIO/LED相关适用于Android/Linux
13 0
|
9天前
|
SQL 存储 分布式计算
Hive【基础知识 02-2】【Hive CLI 命令行工具使用】【详细举例-包含测试脚本文件】
【4月更文挑战第7天】Hive【基础知识 02-2】【Hive CLI 命令行工具使用】【详细举例-包含测试脚本文件】
16 0
|
23天前
|
Ubuntu Unix Linux
【Linux/Ubuntu】Linux/Ubuntu运行python脚本
【Linux/Ubuntu】Linux/Ubuntu运行python脚本

热门文章

最新文章