`
shicheng
  • 浏览: 165735 次
  • 性别: Icon_minigender_1
  • 来自: 泉州
社区版块
存档分类
最新评论

Shell脚本语法--函数

阅读更多

和C语言类似,Shell中也有函数的概念,但是函数定义中没有返回值也没有参数列表。例如:

#! /bin/sh

foo(){ echo "Function foo is called";}
echo "-=start=-"
foo
echo "-=end=-"

注意函数体的左花括号{和后面的命令之间必须有空格或换行,如果将最后一条命令和右花括号}写在同一行,命令末尾必须有;号。

在定义foo()函数时并不执行函数体中的命令,就像定义变量一样,只是给foo这个名字一个定义,到后面调用foo函数的时候(注意Shell中的函数调用不写括号)才执行函数体中的命令。Shell脚本中的函数必须先定义后调用,一般把函数定义都写在脚本的前面,把函数调用和其它命令写在脚本的最后(类似C语言中的main函数,这才是整个脚本实际开始执行命令的地方)。

Shell函数没有参数列表并不表示不能传参数,事实上,函数就像是迷你脚本,调用函数时可以传任意个参数,在函数内同样是用$0$1$2等变量来提取参数,函数中的位置参数相当于函数的局部变量,改变这些变量并不会影响函数外面的$0$1$2等变量。函数中可以用return命令返回,如果return后面跟一个数字则表示函数的Exit Status。

下面这个脚本可以一次创建多个目录,各目录名通过命令行参数传入,脚本逐个测试各目录是否存在,如果目录不存在,首先打印信息然后试着创建该目录。

#! /bin/sh

is_directory()
{
  DIR_NAME=$1
  if [ ! -d $DIR_NAME ]; then
    return 1
  else
    return 0
  fi
}

for DIR in "$@"; do
  if is_directory "$DIR"
  then :
  else
    echo "$DIR doesn't exist. Creating it now..."
    mkdir $DIR > /dev/null 2>&1
    if [ $? -ne 0 ]; then
      echo "Cannot create directory $DIR"
      exit 1
    fi
  fi
done

注意is_directory()返回0表示真返回1表示假。

原文:http://learn.akae.cn/media/ch31s05.html

分享到:
评论

相关推荐

    Linux运维-运维系统服务04-Shell脚本d6-Shell函数与正则表达式-05case语句基本语法结构2.mp4

    Linux运维-运维系统服务04-Shell脚本d6-Shell函数与正则表达式-05case语句基本语法结构

    Linux运维-运维系统服务04-Shell脚本d6-Shell函数与正则表达式-04case语句基本语法结构1.mp4

    Linux运维-运维系统服务04-Shell脚本d6-Shell函数与正则表达式-04case语句基本语法结构

    shell脚本合集--大量注释

    **Shell脚本合集——深度解析与应用** 在IT运维领域,Shell脚本扮演着至关重要的角色,尤其在Linux系统中。"shell脚本合集--大量注释"是一个宝贵的资源,它包含了50多个用于一键部署服务的脚本,如Nginx、Redis集群...

    mysql-shell:mysql-shell-8.4.0-windows-x86-64bit.zip

    2. **自动完成和提示**:在Shell中,用户可以享受到自动补全和语法提示功能,极大地提高了编写查询和脚本的效率。 3. **图形化用户界面(GUI)**:虽然MySQL Shell主要是命令行工具,但也可以通过JavaScript API...

    linux shell脚本攻略-高清

    Linux Shell脚本攻略,作为一款深受用户欢迎的学习资源,尤其对于初学者而言,它提供了一个系统且详尽的教程,帮助读者深入理解并掌握Linux Shell编程。Shell脚本是Linux操作系统中的一种强大工具,用于自动化执行一...

    shell编程 创建shell脚本 shell 基础语法 shell流程控制语法 shell函数

    下面将详细介绍创建 Shell 脚本、Shell 基础语法、流程控制语法以及如何定义和使用 Shell 函数。 首先,让我们理解一下 Shell 编程的基础。Shell 是操作系统提供的一种命令解释器,用户通过 Shell 与操作系统进行...

    linux shell脚本攻略-第2版

    Linux Shell脚本攻略第二版是一本专为Linux用户和管理员设计的...通过学习这本书,读者不仅可以掌握Shell脚本的基本语法,还能了解到如何编写高效、可靠的自动化脚本来解决实际问题,提升Linux系统的管理和维护能力。

    Linux命令行与shell脚本编程-正则表达式的应用案例

    在bash等shell脚本中,我们可以利用内置的字符串函数如`[[ ... =~ ... ]]`来进行正则匹配。例如: ```bash if [[ "$string" =~ pattern ]]; then echo "匹配成功" else echo "匹配失败" fi ``` 三、正则表达式...

    Shell脚本学习教程PDF版

    在“Shell脚本学习教程PDF版”中,你将深入理解Shell脚本的基本概念、语法结构以及高级特性。 首先,Shell脚本的基础包括变量、条件语句、循环结构和函数。变量是存储数据的地方,可以是文本、数字或者其他类型。在...

    shell脚本100例-详细高清版

    在学习shell脚本时,基础语法是首要内容。包括变量的声明和使用、条件语句(if-else)、循环结构(for、while)、函数定义以及输入/输出重定向等。例如,`#!/bin/bash`是脚本的首行,用于指定解释器为Bash;`echo`...

    shell脚本学习指南-中文版

    Shell脚本是Linux/Unix操作系统中的一种编程语言,它允许用户通过命令行接口执行一系列预定义的命令。在Linux环境中,Shell脚本是自动化任务、系统管理、程序集成和日常操作的强大工具。以下是对"shell脚本学习指南-...

    Shell脚本100例-v0.8.rar

    1. **基础语法**:Shell脚本的基础包括变量声明、赋值、字符串操作以及条件判断等。例如,`echo`命令用于输出内容,`if...fi`结构进行条件判断,`for`和`while`循环处理序列数据。 2. **环境变量**:如`PATH`、`...

    shell脚本语法

    ### Shell脚本语法详解 #### 一、Shell脚本基础 **Shell脚本**是一种用于自动化执行Linux或Unix系统中的任务的脚本语言。通过编写Shell脚本,用户可以组合多个命令来完成复杂的操作,提高工作效率。Shell脚本的...

    Shell脚本专家指南-中英文

    《Shell脚本专家指南》是一本专为提升Unix和Linux环境下Shell脚本编程能力而编写的书籍,由Ron Peters撰写,结合了他丰富的实践经验。这本书深入浅出地讲解了Shell脚本的基础与高级技巧,旨在帮助读者提升工作效率,...

    250个shell脚本

    通过学习和实践这些脚本,你可以深入理解Shell脚本的基本语法、变量、函数、流程控制结构,以及如何调用系统命令。 Shell编程的核心知识点包括: - 命令行参数:如$0, $1, $@等,用于接收脚本执行时传递的参数。 - ...

    Shell脚本-珍藏版

    本珍藏版Shell脚本教程旨在为初学者提供基础知识的系统学习,包括脚本的编写、字符串处理、表达式与运算符、流程控制、函数与数组、正则表达式、文本处理、标准输入输出和错误处理、信号处理、系统文件以及常用命令...

    shell脚本与Makefile区别.docx

    "shell脚本与Makefile区别" shell 脚本和 Makefile 是两个不同的工具,它们都用于自动化构建和编译过程,但是它们有很大的不同之处。本文将详细介绍 shell 脚本和 Makefile 的区别。 首先,shell 脚本和 Makefile ...

    shell脚本大全

    1. **基础语法**:Shell脚本由命令行指令组成,每条指令之间用换行符分隔。基础语法包括变量定义(例如,`VAR=value`),条件语句(如`if-else`结构),循环(如`for`和`while`循环),以及函数定义。 2. **输入/...

    linux shell 脚本入门

    - Shell脚本可以定义函数,封装一组命令,方便复用。 - 函数通过`function`关键字或直接在名称后跟一对括号定义。 7. **控制流**: - `break`和`continue`用于跳出当前循环或跳过剩余循环迭代。 - `case`语句...

Global site tag (gtag.js) - Google Analytics