1. 在shell文件内部定义函数并引用:
[~/shell/function]# cat factorial.sh
#!/bin/bash
function factorial
{
factorial=1
for (( i=1;i <= $1;i++ ))
do
factorial=$[ $factorial * $i ]
done
echo $1的阶乘是:$factorial
}
echo '程序名':$0,用于求阶乘
factorial $1
[~/shell/function]# ./factorial.sh 10
程序名:./factorial.sh,用于求阶乘
10的阶乘是:3628800
2.返回值
函数返回码是指函数最后一条命令的状态码,可以用于函数返回值
使用return命令手动指定返回值:
[~/shell/function]# cat return.sh
#!/bin/bash
function fun1 {
read -p "enter a: " a
echo -n "print 2a: "
return $[ $a * 2 ]
}
fun1
echo "return value $?"
[~/shell/function]# ./return.sh
enter a: 100
print 2a: return value 200
由于shell状态码最大是255,所以当返回值大于255时会出错
[~/shell/function]# ./return.sh
enter a: 200
print 2a: return value 144
3.函数输出
为了返回大于255的数、浮点数和字符串值,最好用函数输出到变量:
[~/shell/function]# cat ./fun_out.sh
#!/bin/bash
function fun2 {
read -p "enter a: " a
echo -n "print 2a: "
echo $[ $a * 2 ]
}
result=`fun2`
echo "return value $result"
[~/shell/function]# ./fun_out.sh
enter a: 400
return value print 2a: 800
4.向函数传递参数(使用位置参数):
[~/shell/function]# cat ./parameter.sh
#!/bin/bash
if [ $# -ne 3 ]
then
echo "usage: $0 a b c"
exit
fi
fun3() {
echo $[ $1 * $2 * $3 ]
}
result=`fun3 $1 $2 $3`
echo the result is $result
[~/shell/function]# ./parameter.sh 1 2 3
the result is 6
[~/shell/function]# ./parameter.sh 1 2
usage: ./parameter.sh a b c
5.全局变量与局部变量
默认条件下,在函数和shell主体中建立的变量都是全局变量,可以相互引用,当shell主体部分与函数部分拥有名字相同的变量时,可能会相互影响,例如:
[~/shell/function]# cat ./variable.sh
#!/bin/bash
if [ $# -ne 3 ]
then
echo "usage: $0 a b c"
exit
fi
temp=5
value=6
echo temp is: $temp
echo value is: $value
fun3() {
temp=`echo "scale=3;$1*$2*$3" | bc -ql`
result=$temp
}
fun3 $1 $2 $3
echo "the result is $result"
if [ `echo "$temp > $value" | bc -ql` -ne 0 ]
then
echo "temp is larger"
else
echo "temp is still smaller"
fi
[~/shell/function]# ./variable.sh 12 3 2
temp is: 5
value is: 6
the result is 72
temp is larger
在这种情况下,在函数内部最好使用局部变量,消除影响
[~/shell/function]# cat ./variable.sh
#!/bin/bash
if [ $# -ne 3 ]
then
echo "usage: $0 a b c"
exit
fi
temp=5
value=6
echo temp is: $temp
echo value is: $value
fun3() {
local temp=`echo "scale=3;$1*$2*$3" | bc -ql`
result=$temp
}
fun3 $1 $2 $3
echo "the result is $result"
if [ `echo "$temp > $value" | bc -ql` -ne 0 ]
then
echo "temp is larger"
else
echo "temp is still smaller"
fi
[~/shell/function]# ./variable.sh 12 3 2
temp is: 5
value is: 6
the result is 72
temp is still smaller
6.向函数传递数组变量:
[~/shell/function]# cat array.sh
#!/bin/bash
a=(11 12 13 14 15)
echo ${a[*]}
function array(){
echo parameters : "$@"
local factorial=1
for value in "$@"
do
factorial=$[ $factorial * $value ]
done
echo $factorial
}
array ${a[*]}
[~/shell/function]# ./array.sh
11 12 13 14 15
parameters : 11 12 13 14 15
360360
7.函数返回数组变量
[~/shell/function]# cat array1.sh
#!/bin/bash
a=(11 12 13 14 15)
function array(){
echo parameters : "$@"
local newarray=(`echo "$@"`)
local element="$#"
local i
for (( i = 0; i < $element; i++ ))
{
newarray[$i]=$[ ${newarray[$i]} * 2 ]
}
echo new value:${newarray[*]}
}
result=`array ${a[*]}`
echo ${result[*]}
[~/shell/function]# ./array1.sh
parameters : 11 12 13 14 15 new value:22 24 26 28 30
相关推荐
linux shell 函数
linux下的shell编程,本人从事linux下的工作多年,总结了一些经验,希望能够帮助新童鞋快速学习linux,快速掌握shell脚本,提高工作效率
Linux 在Shell脚本中使用函数实例详解 Shell的函数 Shell程序也支持函数。函数能完成一特定的功能,可以重复调用这个函数。 函数格式如下: 函数名() { 函数体 } 函数调用方式: 函数名 参数列表 实例:编写...
9. **Shell函数与别名**:如何定义和使用自定义函数,以及设置别名简化常用命令。 10. **案例分析**:书中可能会提供一些实际应用场景的脚本案例,如日志分析、系统维护等,帮助读者理解和应用所学知识。 "Linux ...
《Linux Shell编程艺术》可能会详细讲述Shell的语法特性,包括变量、条件语句、循环结构、函数定义、输入/输出重定向等。这本书可能会深入探讨如何利用Shell的高级特性,如正则表达式、管道、进程控制和信号处理,来...
本文将深入探讨Linux Shell函数的概念、创建、调用以及其在日常系统管理中的应用。 ### 1. Shell函数基础 Shell函数类似于其他编程语言中的函数,它是一段可重复使用的代码块,可以接受参数并返回值。在Shell中,...
通过熟练掌握这些Shell函数式编程技巧,你将能够编写出更加高效、可维护的脚本,从而提升Linux系统的自动化和管理效率。记住,实践是检验真理的唯一标准,多动手编写和调试Shell脚本,才能真正领会其精髓。
Linux中的shell函数Linux中的shell函数
Linux Shell是Linux操作系统中不可或缺的一部分,它是一种命令行接口,允许用户通过文本命令与系统进行交互。Shell脚本则是编写的一系列命令,可以自动化执行一系列任务,极大地提高了工作效率。在这个"Linux Shell...
在Linux系统中,Shell脚本是用户与操作系统交互的重要方式,而Shell函数是编写复杂脚本时不可或缺的构造块。本文将深入探讨如何在Shell中定义、调用和使用函数,以及函数参数的传递和跨文件调用。 一、无参函数的...
本文将深入探讨Linux Shell编写的基础知识,包括基本概念、常用命令、变量与参数、流程控制以及函数的使用。 首先,Shell是一个命令解释器,它接收用户输入的命令并执行。在Linux系统中,常见的Shell有Bash(Bourne...
主要内容包括:Linux及Linux Shell简介、初识Linux Shell、常用Shell(Bash)命令、Shell命令进阶、Shell编程基础、Shell的条件执行、Bash循环、Shell函数、正则表达式、脚本输入处理、Shell重定向、管道和过滤器、...
五、Shell函数和流程控制 - case语句:根据不同的条件执行不同的代码块。 - exit:结束当前Shell脚本或子shell。 - trap:设置信号处理函数,当接收到特定信号时执行。 - jobs:查看和控制后台进程。 六、Shell脚本...
Linux Shell 编程基础包括了解 Shell 的基本概念、Shell 变量、条件语句、循环语句、函数等。掌握这些基础知识后,可以编写出更加复杂的 Shell 脚本,实现自动化任务、数据处理、系统管理等功能。 1. Shell 变量 ...
1. Shell 函数:Shell 函数是一种编程方式,可以将一组命令封装成一个函数。例如 `hello() { echo "Hello World!"; }`。 2. Shell 数组:Shell 数组是一种数据结构,可以存储多个值。例如 `arr=(1 2 3 4 5)`。 3. ...
- **定义和调用Shell函数**:通过`function`关键字或直接使用函数名定义,通过函数名调用。 - **函数参数**:函数可以接收参数,类似于位置参数。 6. **输入/输出重定向** - **标准输入(stdin)、标准输出...
《Linux Shell Scripting Cookbook 第二版》是一本系统讲解Linux Shell脚本编写方法的书籍,涵盖了超过110个实用的配方,用于解决真实世界中的Shell脚本问题。通过这些配方,读者可以学习到如何利用Shell脚本自动化...
Linux Shell脚本编程实例 Linux Shell脚本编程实例是指使用Linux Shell...Linux Shell脚本编程实例是Linux Shell脚本编程的基础,涵盖了 Linux Shell脚本编程的所有方面,包括变量、控制结构、函数、环境变量等等。
5. **函数**:如何定义和调用Shell函数,提高代码复用性。 6. **参数处理**:脚本接收命令行参数的方式,以及特殊变量$0、$1、$*、$@等的含义和用法。 7. **Shell内置命令**:如source(使脚本立即执行,不创建新...
5. Shell函数:可以创建自定义的函数,提高代码复用性。 6. 正则表达式:在某些命令中,如`grep`,支持正则表达式进行复杂模式匹配。 通过阅读和理解这个“Linux Shell 参考文档”,你可以掌握Linux Shell的基本...