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
http://www.jb51.net/article/57951.htm
相关推荐
首先,了解SHELL函数的用法。SHELL函数的基本语法是: ```vb Shell "command", WindowStyle ``` 其中,“command”是要执行的命令或程序路径,WindowStyle则是指定程序窗口的显示方式,如隐藏运行(vbHide)、最小...
本文将详细解析Shell函数的基础概念、创建方法、参数传递、错误处理以及实际应用案例。 #### 一、Shell函数基础 Shell函数由关键字`function`或简单的`名称()`定义,其中`名称`是函数的名字,用于后续调用。例如,...
VBShell函数用法参照.pdf
而Shell中函数的定义有两种方法,如下: 代码如下: function fname() { statements; } 或 代码如下: fname() { statements; } 注意,()内是没有参数的,它并不像C语言那样,在()里可以有参数
#### 一、定义Shell函数 在Linux Shell中,用户可以定义自己的函数,以便在脚本中重复使用。这不仅提高了代码的可读性和可维护性,还使得脚本更加模块化。 ##### 语法格式: ```sh [function] funname [()] { ...
由于Shell函数无法直接返回字符串,通常有两种变通方法: - 将函数的输出通过`echo`命令打印,然后用`$()`捕获: ```shell testFun() { echo "Success" } return_value=$(testFun) echo "$return_value" ``...
在Shell脚本编程中,有时我们...通过这样的方法,你可以有效地在Shell函数中传递和处理数组,避免只传递数组第一个元素的问题。这在编写复杂的Shell脚本或工具时尤其重要,因为它允许你更灵活地组织和管理数据结构。
为了避免上述提到的并发问题,文章介绍了使用/dev/urandom来生成更安全的随机数种子的方法。/dev/urandom是一个提供伪随机数生成器的特殊文件,可以在每次需要时生成新的随机数序列。通过管道命令`tr -cd 0-9 | head...
Shell函数允许将一组命令组织在一起,方便重复使用。定义函数如下: ```bash my_function() { echo "Hello, World!" } ``` 调用函数: ```bash my_function ``` **Shell调试** 调试Shell脚本通常涉及到使用`set`...
1. `README.md`: 这是项目的说明文件,通常会详细介绍`composure`的安装、配置和使用方法。 2. `composure.sh`或`composure`: 这可能是`composure`的主脚本文件,包含了工具的核心功能。 3. `examples/`: 可能包含...
第19章 shell函数 202 第20章 向脚本传递参数 224 第21章 创建屏幕输出 236 第22章 创建屏幕输入 252 第23章 调试脚本 274 第24章 shell嵌入命令 277 第五部分 高级shell编程技巧 第25章 深入讨论 第26章 shell ...
此外,还有其他替代方案来解决这个问题,比如使用`popen`函数,或者在服务器配置中开启FastCGI模式并调整其配置以允许执行命令。不过,这些方法可能需要更深入的服务器配置知识,对初学者来说可能较为复杂。 总之,...
一、Shell函数 本教程目前为止所有脚本都是从头到尾执行。这样做很好,但你也许已经注意到有些脚本段间互相重复。 shell允许将一组命令集或语句形成一个可用块,这些块称为shell函数。 shell中函数的定义格式如下: ...
VB 中,常以Shell指令来执行外部程式,然而它在Create该外部process 後,立刻 就会回到vb 的下一行程式,无法做到等待该Process结束时,才执行下一行指令, 或是说,无法得知该Process是否已结束,甚者,该...
总之,VB通过Shell函数和`WScript.Shell`对象提供了一种灵活的方式来调用外部exe,并能等待其返回,从而实现更复杂的交互操作。掌握这种技术对于任何VB开发者来说都是非常有价值的,无论你是新手还是经验丰富的...
下面我们将详细解释这两个函数的用法及其示例。 ### Lpad() 函数 `Lpad()` 函数的主要功能是在字符串的左侧添加指定字符,以使最终字符串的总长度达到给定的数值。函数的基本语法如下: ```sql lpad(string, n, ...
而在Shell编写中,我们所说的"shell脚本"(Shell script)是一种使用Shell语言编写的程序,用于自动化一系列的系统任务。在Linux或Unix环境中,Bash Shell是最常用的一种Shell,因此我们通常所说的Shell编写指的是...
这个“Excel-VBA宏编程实例源代码-以Shell函数启动邮件软件并发送电子邮件.zip”文件包含了一个实用的VBA宏示例,它利用了Windows操作系统中的Shell函数来启动邮件客户端并自动发送电子邮件。下面我们将详细讨论这个...