shell脚本--函数
shell的函数和Javacript和php的函数声明一样,只不过shell在调用函数的时候,只需要写函数名就可以调用函数,注意不要在函数名后面加括号
创建并使用函数
#!/bin/bash
#文件名:test.sh function test(){
echo "aaaaaaa"
}
#直接使用函数名就可以调用函数
test
test
运行:
ubuntu@ubuntu:~$ ./test.sh
aaaaaaa
aaaaaaa
ubuntu@ubuntu:~$
函数传参、局部变量
给函数传递参数的方法 和给运行脚本传参数的方法相同:写在调用的函数名后面,空格分隔。
使用$1表示第一个参数,$#获取所有参数的个数,$*获取所有参数
shell中,默认在脚本任何地方定义的变量都是全局变量,但是可以再函数中使用local限定为局部变量,只在本函数中有效。
#!/bin/bash
#文件名:test.sh #求0到num的和
function sum(){
local num=$1
local tot=0
local i=0
while [ $i -le $num ];do
tot=$[ $tot + $i ]
i=$[ $i + 1 ]
done echo $tot
} res=$(sum 100)
echo "0+1+2+...+100="$res
运行:
ubuntu@ubuntu:~$ ./test.sh
0+1+2+...+100=5050
ubuntu@ubuntu:~$
给函数传递数组(在函数中复制数组)
使用的是$*访问传递的所有数组元素,所以在传递给函数数组时,不要只写数组名,应该写为${arr[*]}才是将数组所有元素传递。
在函数内部使用()将$*括起来,此时就类似于将数组元素展开到()中,然后赋值给一个变量。
#!/bin/bash arr=("one" "two" "three")
function show(){
#create a new array
local arr=($*)
arr[0]="opq";arr[1]="rst";arr[2]="xyz"
echo ${arr[*]} ${#arr[*]}
} echo ${arr[*]} ${#arr[*]}
show ${arr[*]}
echo ${arr[*]} ${#arr[*]}
运行结果:
ubuntu@ubuntu:~$ ./test.sh
one two three 3
opq rst xyz 3
one two three 3
函数返回数组
#!/bin/bash function return_arr(){
local arr=("one" "two" "three")
echo ${arr[*]}
} #注意格式,是在返回值的外边加一层括号
res=($(return_arr))
echo ${#res} ${res[*]}
shell脚本--函数的更多相关文章
- shell脚本函数与数组
前言 之前写过一篇关于shell脚本流程控制总结,这次继续写关于shell脚本的问题.本篇文章主要包含shell脚本中的函数以及数组的用法介绍.同时也涵盖了一些字符串处理以及shell脚本比较使用的小 ...
- shell脚本函数及数组
函数介绍: 函数function是由若干条shell命令组成的语句块,实现代码重用和模块话编程. 它与shell程序形式上是相似的,不同的是它不是一个单独的进程,不能独立运行,而是shell程序的一部 ...
- 运维shell脚本函数语法
在fun.sh 文件里,使用函数来封装脚本内容 usege() { echo "hello world" echo "脚本怎么使用函数......"}usege ...
- 利用shell脚本函数实现网络连通性的检测
通常情况下,linux系统网络连通性的检测有两种方法: 1.通过“ping指令 + 目标IP” 或者 “ping指令 + 目标IP域名” 注意针对IPv6地址的IP网络检测需要试用ping6,同时pi ...
- Linux命令参数处理 shell脚本函数getopts
getopts 命令 用途 处理命令行参数,并校验有效选项. 语法 getopts 选项字符串 名称 [ 参数 ...] 描述 getopts 的设计目标是在循环中运行,每次执行循环,getopts ...
- 关于shell脚本函数、数组、字符串截取、svn更新发布实例
#/bin/bash #功能:QA服根据模板创建区配置文件并提交到svn上. SOURCE_PATH=/data/source_code SVN_PATH=/code/psm #svn发布目录,要 ...
- shell脚本函数
不调用就不执行 调用就执行 调用时候的$1是指执行时候的参数1 调用之后的$是位置参数
- shell 脚本之获取命令输出字符串以及函数参数传递
在ubuntu 14.04之后,所有的U盘挂载也分用户之分,最近很多操作也和U盘有关,所以就研究了一上午shell脚本函数以及字符串操作的方法. 字符串操作: 获取他的命令输出比较简单,打个简单的比方 ...
- 《Linux命令行与shell脚本编程大全》第十七章 创建函数
可以将shell脚本代码放进函数中封装起来,这样就能在脚本中的任何地方多次使用它了. 17.1 基本的脚本函数 函数:是一个脚本代码块,可以为其命名并在代码中任何位置重用. 17.1.1 创建函数 有 ...
随机推荐
- Django之Form进阶
s6day76 内容回顾: Form组件: - 类 继承Form - 字段 字段 - 实例化 - is_valid() - cleaned_data - errors Form 组件: ...
- 【转】同一个SQL查询语句,为什么使用到的索引不同?
问: 同一个SQL查询语句,只是修改where条件中的一个值,为什么使用到的索引情况也会不同?谢谢! 1) explain执行结果,如下图: 2) 表中的数据如下图: 3) 表结构如下图: 4) 创建 ...
- go标准库的学习-text/template
参考:https://studygolang.com/pkgdoc 导入方式: import "text/template" template包实现了数据驱动的用于生成文本输出的模 ...
- http请求的全过程
参考资料 http://blog.jobbole.com/106632/ https://www.cnblogs.com/engeng/articles/5959335.html https://ww ...
- 3.1《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——下载文件
首先,为了不手动创建一个长文件(这太麻烦了),我们将使用强大的curl(有时也写作"cURL")工具从网上下载一个文件,这个命令可以让命令行与URL交互.尽管这不是Unix核心命令 ...
- 初始化应用程序数据ng-init指令
ng-init指令初始化应用程序数据. 如果我们想给文本框一个初化的值: <div ng-app="" ng-init="Name='Leo'"> ...
- NOI Day2线上同步赛崩盘记
Preface 蒟蒻愉快的NOI线上赛Day2之行,不过因为太菜就凉了 这次由于策略&&网络的问题,最后两题都没有交,结果就靠T1稳住拿了75分就回家了. 我真是太菜了. 屠龙勇士 首 ...
- [Python]Python 函数调用小例子
函数定义: In [78]: def printme(str): ....: print str ....: return ....: 调用: In [79]: printme('This is Ji ...
- Scala学习(七)练习
控制结构和函数 1. 编写示例程序,展示为什么 package com.horstmann.impatient 不同于 package com package horstmann package im ...
- 阿里云Centos搭建jdk环境
当我们开始了自己的开发,那么云服务器是一定少不了的,当然也有很多同学只是在本地做开发研究. 这里记录一下我自己在阿里云上搭建环境的过程. 趁着优惠的时候,我在阿里云上购买了ECS云服务器,并且搭载了C ...