Shell 脚本学习记录

特殊变量


变量


含义


$0


当前脚本的文件名


$#


传递给脚本或函数的参数个数。


$*


传递给脚本或函数的所有参数。


$?


上个命令的退出状态,或函数的返回值。


$$


当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。


[email protected]


传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。

运算符

关系运算符列表


运算符


说明


举例


-eq


检测两个数是否相等,相等返回 true。


[ $a -eq $b ] 返回 true。


-ne


检测两个数是否相等,不相等返回 true。


[ $a -ne $b ] 返回 true。


-gt


检测左边的数是否大于右边的,如果是,则返回 true。


[ $a -gt $b ] 返回 false。


-lt


检测左边的数是否小于右边的,如果是,则返回 true。


[ $a -lt $b ] 返回 true。


-ge


检测左边的数是否大等于右边的,如果是,则返回 true。


[ $a -ge $b ] 返回 false。


-le


检测左边的数是否小于等于右边的,如果是,则返回 true。


[ $a -le $b ] 返回 true。

布尔运算符列表

字符串运算符列表


运算符


说明


举例


=


检测两个字符串是否相等,相等返回 true。


[ $a = $b ] 返回 false。


!=


检测两个字符串是否相等,不相等返回 true。


[ $a != $b ] 返回 true。


-z


检测字符串长度是否为0,为0返回 true。


[ -z $a ] 返回 false。


-n


检测字符串长度是否为0,不为0返回 true。


[ -z $a ] 返回 true。


str


检测字符串是否为空,不为空返回 true。


[ $a ] 返回 true。

文件测试运算符列表


操作符


说明


举例


-b file


检测文件是否是块设备文件,如果是,则返回 true。


[ -b $file ] 返回 false。


-c file


检测文件是否是字符设备文件,如果是,则返回 true。


[ -b $file ] 返回 false。


-d file


检测文件是否是目录,如果是,则返回 true。


[ -d $file ] 返回 false。


-f file


检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。


[ -f $file ] 返回 true。


-g file


检测文件是否设置了 SGID 位,如果是,则返回 true。


[ -g $file ] 返回 false。


-k file


检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。


[ -k $file ] 返回 false。


-p file


检测文件是否是具名管道,如果是,则返回 true。


[ -p $file ] 返回 false。


-u file


检测文件是否设置了 SUID 位,如果是,则返回 true。


[ -u $file ] 返回 false。


-r file


检测文件是否可读,如果是,则返回 true。


[ -r $file ] 返回 true。


-w file


检测文件是否可写,如果是,则返回 true。


[ -w $file ] 返回 true。


-x file


检测文件是否可执行,如果是,则返回 true。


[ -x $file ] 返回 true。


-s file


检测文件是否为空(文件大小是否大于0),不为空返回 true。


[ -s $file ] 返回 true。


-e file


检测文件(包括目录)是否存在,如果是,则返回 true。


[ -e $file ] 返回 true。

local 局部变量

func5() {

local temp=$[ $value +3 ]               local关键字,定义局部变量

result=$[ $temp * 2 ]

}

value=6         默认情况下,脚本中定义的任何变量均为全局变量,可以函数内访问

exit

exit 是一个函数库,表示退出shell,并返回给定值

一般来说,exit 0   表示程序是正常结束

如果 exit 非 0 值,表示程序产生了一个错误。

以 shell 为例,在 shell 中调用完你的程序之后,用 echo $? 命令就可以看到你的程序的 exit 值。在 shell 脚本中,通常会根据上一个命令的 $? 值来进行一些流程控制

cd  /home/lftest || exit  1  进入脚本所在目录  否则退出

return

函数的返回值,return后面的语句不再执行

#!/bin/bash

fun(){

if [ $1 = "1" ];then

echo "arg=1"

return 1

else

return 2

fi

echo "345"  #不会再执行

}

fun 1

echo $?

输出:arg=1

1

时间: 2024-10-24 23:39:21

Shell 脚本学习记录的相关文章

笔记——shell脚本学习指南

<shell脚本学习指南>机械工业出版 ISBN 987-7-111-25504-8 第2章 2.4 初级陷阱 1.当今的系统,对#!这一行的长度限制从63到1024个字符都有,尽量不要超过64个字符. 2.在某些系统上,命令行部分包含了命令的完整路径名称.不过有些系统却不是这样:命令行的部分会原封不动地传递给被引用的程序. 3.别在选项之后放置任何空白,因为空白也会跟着选项一起传递给被引用的程序. 4.你需要知道解释其的完整路径名称.这可以用来规避可移植问题,因为不同的厂商可能将同样的东西放

Auto Hotkey 脚本学习记录 —— 热键与热字符串

参考文档: AutoHotkey 0级入门教程:让重复工作一键完成 (2011-10-24修订) AutoHotkey:帮助win run更方便 AutoHotkey|脚本:用Irfanview把24位真彩图片优化到实际色深 AutoHotkey 学习指南(最近更新: 2012-03-09) AHK 是一个叫 AutoHotKey 的软件的缩写,可以实现很多有趣的功能,可以简化你的重复性工作.比如修改系统快捷键.模拟鼠标键盘按键的按下--我们先来对付一下这些 IT 名词,它们会在后面的教程中经常

shell脚本学习指南

以下八点不敢说就能成为你shell脚本学习指南de全部,至少可以让你编写出可靠的shell脚本. 1. 指定bash shell 脚本的第一行,#!之后应该是什么? 如果拿这个问题去问别人,不同的人的回答可能各不相同.我见过/usr/bin/env bash,也见过/bin/bash,还有/usr/bin/bash,还有/bin/sh,还有/usr/bin/env sh.这算是编程界的“’茴’字四种写法”了. 在多数情况下,以上五种写法都是等价的.但是,写过程序的人都知道:“少数情况”里往往隐藏

shell脚本学习与总结

shell脚本学习总结,东西很多,供初学者参考. shell脚本是区分大小写的. 2.Unix特殊字符有: ( ; $ ? & * () [] ` ' " + 使用其时要进行转义() 3.Shell的注释以#开头 4.函数的定义Function fuction_name(){ Command to execute} 调用时直接用function_name. 5.控制结构 1)If...then语句 If [ test_command ]    Then    Commandsfi2)If

shell脚本学习笔记系列--1

一.学好shell编程的知识储备 1.相关Linux系统命令应用: 2.Vi/vim 编辑器的熟练使用,相关客户端软件的设置: 3.基础的服务,系统服务ntp,crond,网络服务:nfs,rsync,inotify,sersync,ssh,lanmp等. 补充:清空日志的三种方法: 1)echo  " " > filename.log 2)>filename.log 3)cat  /dev/null > filename.log 注:工作中有的时候不能删除(日志)文

shell 脚本学习

距离上一次写东西又隔了一段时间了,期间一直跟着私房菜学习,还是没养成定期做记录的习惯,今天就来写第一个脚本的编写吧. 经过几天的积累,学习了下shell脚本的编写,目前掌握的还不太成熟,凡事从小入手肯定是没错的,先写个简单的吧(难的也不会写o(╯□╰)o). 这个脚本的执行方法,就是输入生日来计算当前日期距离生日还有多少天,如果已经过完生日则计算来年生日的时间. #!/bin/bash #Program: #    Calculate how long it takes to have a bi

Shell脚本学习指南 [ 第三、四章 ] 查找与替换、文本处理工具

摘要:第三章讨论的是编写Shell脚本时经常用到的两个基本操作.第四章总共介绍了约30种处理文本文件的好用工具. 第三章 查找与替换 概括:本章讨论的是编写Shell脚本时经常用到的两个基本操作:文本查找.文本替换. 3.1  查找文本 如需从输入的数据文件中取出特定的文本行,主要的工具为grep程序.POSIX采用三种不同grep变体:grep.egrep.fgrep整合为单个版本,通过不同的选项,分别提供这三种行为模式.who | grep -F root上面使用-F选项,以查找固定字符串r

shell脚本学习笔记:通过shell实现linux用户管理和监控

学习shell做的第一个脚本,感谢云知梦李强强老师的shell编程教程 创建shell脚本文件: touch menu.sh touch index.sh touch welcome.sh 赋予脚本文件可执行权限: chmod a+x menu.sh index.sh welcome.sh menu.sh #!/bin/bash #menu.sh function menu(){ title="My Home" name="Randy" time=`date +%Y

shell脚本学习笔记 (sed的高级用法----模式空间和保持空间)

前段时间在学习shell脚本,上次有提到sed的模式空间和保持空间概念,但是一直没有研究好,这两天研究了一下,所以将它发出来,不是很全面,仅仅供大家参考一下. 保持空间sed在正常情况下,将处理的行读入模式空间,脚本中的"sed command(sed命令)"就一条接着一条进行处理,直到脚本执行完毕.然后该行被输出,模式被清空:接着,在重复执行刚才的动作,文件中的新的一行被读入,直到文件处理完毕. 模式空间可以比喻为一个生产线,而保持空间则可以被比喻为仓库,这个比喻希望可以帮助大家理解