shell脚本判断文件是否存在循环?

今天小编就为大家分享一篇关于Shell脚本用for循环遍历参数的方法技巧,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

1.当一个脚本需要传入的参数较多时,可以使用for循环进行参数遍历

if [ -z "$1" ];then #对用户输入的参数做判断,如果未输入参数则返回脚本的用法并退出,退出值65
 

小技巧1:在"$*"和$*中遍历参数的区别

for i in $* #在$*中遍历参数,此时每个参数都是独立的,会遍历$#次
for i in "$*" #在"$*"中遍历参数,此时"$*"被扩展为包含所有位置参数的单个字符串,只遍历一次
 

小技巧2:在"$@"和$@中遍历参数没有区别

 

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

  • popen()函数通过创建一个管道,调用fork()产生一个子进程,执行一个shell以运行命令来开启一个进程。这篇文章重点给大家介绍Linux中popen函数的作用,感兴趣的朋友一起看看吧

  • 下面小编就为大家带来一篇浅谈Vim中的Tab与空格缩进。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  • 这篇文章主要介绍了shell 变量的相关资料,帮助大家更好的理解和学习shell,感兴趣的朋友可以了解下

  • 对awk的非常入学,于是把exp.log的处理那段都用awk写出来。惊喜的发现awk有个内置参数NR,而且awk内部也可以进行运算

  • awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。这篇文章主要介绍了Linux中的awk命令的相关知识,需要的朋友可以参考下

Shell 脚本(Shell Script)与Windows/DOS 下的批处理相似,也就是将各类命令预先放入其中,方便一次性执行的一个程序文件,主要用以方便管理员进行设置或者管理。但是Shell 脚本比Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,毕竟它使用了Linux/UNIX 下的命令。

Shell脚本的基本语法

可以使用任何一种编辑器来编辑

编辑该文件后不能立即执行它,需给文件设置可执行程序权限

chmod [权限] [文件名] #添加可执行程序权限(如权限777)

在进行Shell 编程时,以#开头的句子表示注释,直到这一行的结束

(1)首个字母必须位字母(az,AZ)或者下划线(_)

(2)中间不能有空格,可以使用下划线(_)

(3)不能使用其他标点符号

这里要注意:变量赋值时,等号两边都没有空格。在Shell 编程中通常使用全大写变量,方便识别。

要取用一个变量的值,只需在变量名前面加一个$

# 打印变量VAR 的值:
用花括号区分变量和字母

可以使用花括号来告诉Shell 我们要打印的是num 变量

unset 命令可删除变量的赋值

位置参数的值可以用$N 得到,N 是一个数字,如果为1,即$1

$0 与键入的命令行一样,包含脚本文件名
$1,$2,…,$9 分别包含第一个到第九个命令行参数

预定义变量是在Shell 一开始时就定义了的变量,所有预定义变量都是由$符和另一个符号组成的。

·$#:包含命令行参数的个数。
·$@:包含所有命令行参数:“$1,$2,…,$9”。
·$?:包含前一个命令的退出状态,正常退出返回0,反之为非0 值。
·$*:包含所有命令行参数:“$1,$2,…,$9”。
·$$:包含正在执行进程的ID 号。

环境变量用于所有的用户进程。在Linux 中,登录进程称为父进程,Shell 中执行的用户程序均称为子进程。环境变量可以在命令行中设置,但用户注销时这些值将丢失,因此最好在$HOME/目录下的.profile 中定义,传统上环境变量均为大写。

·HISTSIZE:保存历史命令记录的条数。 ·LOGNAME:当前用户登录名。 ·HOSTNAME:主机名称,若应用程序要用到主机名的话,一般是从这个环境变量中取得。 ·SHELL:当前用户用的是哪种Shell。 ·LANG/LANGUGE:和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。 ·MAIL:当前用户的邮件存放目录。 ·TMOUT :用来设置脚本过期的时间,比如TMOUT=3,表示该脚本3 秒后过期。 ·USER :显示当前用户名字。 ·SECONDS:记录脚本从开始到结束耗费的时间。
·echo:显示指定环境变量。
·export:设置新的环境变量。
·env:显示所有环境变量。
·set:显示所有本地定义的Shell 变量。
·unset:清除环境变量。

注意:一定要加$PATH(表示应用PATH变量以前的内容),否则,之前的环境变量会被覆盖掉

算术运算命令expr 主要用于进行简单的整数运算,包括加(+)、减(-)、乘(*)、整除(/)和求模(%)等操作。

【注意】表达式z=expr $x + $y中的符号“”为键盘左上角的“”键,即反引号

s1 = s2 测试两个字符串的内容是否完全一样
s1 != s2 测试两个字符串的内容是否有差异
-z s1 测试s1 字符串的长度是否为0
-n s1 测试s1 字符串的长度是否不为0

tput 命令主要用于设置终端工作模式,或读出终端控制字符。tput 命令与终端控制代码数据库terminfo 相连, 根据Shell 环境变量TERM 的值, 读出这种终端的指定功能控制代码

#如果表达式为真, 则执行命令表1 中的命令, 并退出if 语句;否则执行命令表2 中的语句, 再退出if 语句

多路分支语句case 用于多重条件测试, 语法结构清晰自然

case 字符串变量 in #(case 语句只能检测字符串变量)
 模式1) #(各模式中可用文件名元字符,以右括号结束)
 ;; #(命令表以单独的双分号行结束,退出case 语句)
 模式n) #(模式n 常写为字符* 表示所有其他模式)
 ;; #(最后一个双分号行可以省略)

循环体由语句括号do 和done 来限定

Shell 脚本中,循环控制语句有break 和continue。break n 表示跳出n 层;continue 语句表示马上转到最近一层循环语句的下一轮循环上,continue n 则转到最近n 层循环语句的下一轮循环上。

在Shell 程序中, 常常把完成固定功能、且多次使用的一组命令(语句)封装在一个函数里,每当要使用该功能时只需调用该函数即可。

函数在调用前必须先定义,即在顺序上函数说明必须放在调用程序的前面。

调用程序可传递参数给函数, 函数可用return 语句把运行结果返回给调用程序。

函数只在当前Shell 中起作用, 不能输出到子Shell 中。

echo $? # $?表示获取函数的返回的状态。

在Shell 脚本的执行过程中,支持调用另一个Shell 脚本,调用的格式为

(1)在Linux 编辑中命令区分大小写字符;
(2)在Shell 语句中加入必要的注释,以便以后查询和维护,注释以#开头;
(3)对Shell 变量进行数字运算,使用乘法符号“*”时,要用转义字符“\”进行转义;
(4)由于Shell 对命令中多余的空格不进行任何处理,因此程序员可以利用这一特性调整程序缩进,达到增强程序可读性效果;
(5)在对函数命名时最好能使用有含义且容易理解的名字,即使函数名能够比较准确地表达
函数所完成的任务,同时建议对于较大的程序要建立函数名和变量命名对照表。

选自华清远见《嵌入式操作系统》

循环是一种强大的编程工具,它能够重复执行一组命令。Linux中shell脚本支持while循环、for循环、until循环、select循环,据情况使用不同的循环。根据情况开始使用适当的循环。while和for循环在大多数其他编程语言中都是可用的,如C、c++和Java等。

我要回帖

更多关于 shell脚本判断文件是否存在 的文章

 

随机推荐