shell函数的6个特点
一,调用函数必须在定义函数的后,不然会报错的
返回结果如下:
[root@krlcgcms01 mytest]# sh fun.sh
fun.sh: line 1: fun: command not found //第一次调用fun是报错的,fun没有定义
aaaaaa //第二次调用fum显示的结果
如果是php或者是javascript的话,就不会出现这样的问题
二,向shell函数传递参数很有特点
fun2 (){
echo $0 //$0本身文件名
if [ $1 ] //参数为什么都是从$1开始呢,$0是本身文件名
then
echo "param1 is "$1
else
echo "param1 is null"
fi
if [ $2 ]
then
echo "param2 is "$2
fi
}
fun2 aaa bbb //向fun2传2个参数
fun2 ccc //向fun2传1个参数
fun2 //不传参数
返回结果如下:
这样的传参方式,很特别吧。
三,引用举例
reference (){
pa=\$"$1" //$1显示的是param
echo $pa //显示的是$param
x=`eval "expr $pa "` //x为test
echo $1=$x //param=test
local aaa=$x //定义局部变量
bbb=$x //默认全局变量
eval "$1='test been modified'"
return 1 //最大返回整数257
}
param="test"
echo $param " is test"
reference param
returnvalue=$? //返回值存放在$?里面
echo "return value is " $return_value
echo $param " is not test"
returnvalue=$?
echo "return value is " $return_value
echo "aaa = "$aaa //局部变量外面不能调用
echo "bbb = "$bbb
返回结果如下:
[zhangy@localhost zhangy]$ sh re.sh
test is test
$param
param=test
return value is 1
test been modified is not test
return value is 0
aaa =
bbb = test
从上面的这个例子,我总结以下几点:
1,传引用也挺特别的,function max(&$num_a,$num_b){}如果方法体中$num_a改变了的话,调用的变量也会改变。shell引用的思想差不多,但是形势不一样。
2,shell函数的返回值,只能是整形,并且在0-257之间。
3,在方法定义的变量,如果没有做特别声明,一般都是局部变量,而shell正好相反,局部变量要特别声明。
4,调用方法和取得返回值之间,不能有任何操作,不然取不到return的值。
结合前二个例子显示的特点,差不多有6个特点,肯定还有其他的一些特性,待大家补充
shell循环,判断介绍,以及实例
shell的循环主要有3种,for,while,until
shell的分支判断主要有2种,if,case
一,for循环
#!/bin/bash
for file in $(ls /tmp/test/mytest |grep sh) //for in格式是shell for的基本格式,根js的for in类似
do //循环开始你就把它当成{
echo $file
done //循环结束你就把它当成}
for ((i=0;i<10;i++)) //注意是双小括号,由于受其他语言的影响,很容易搞错
do
echo -n $i
done
echo \ //输出换行
for i in 0 1 2 3 4 5 6 7 8 9
do
echo -n $i
done
echo \
for i in "0 1 2 3 4 5 6 7 8 9" //这个根上面是有区别的,这个循环只循环了一次,双引号里面只是一个变量
do
echo -n $i
done
exit 0
二,while循环
三,until循环
#!/bin/bash
END_CONDITION=end
until [ "$var1" = "$END_CONDITION" ] //读取的变量根设定的变量相等时退出循环,不然永远循环
do
echo "Input variable #1 "
echo "($END_CONDITION to exit)"
read var1
echo "variable #1 = $var1"
echo
done
exit 0
四,if语句
#!/bin/bash
echo "Input a number #1 "
read num
echo "variable #1 = $num"
if [ $num -lt 60 ] //注意lt前面的-,很容易忘的
then
echo "you are not pass"
elif [ $num -lt 70 ] && [ $num -ge 60 ] //多个条件的判断
then
echo "pass"
elif [[ $num -lt 85 && $num -ge 70 ]] //如果放在一起,要注意是双方括号,不要写成[ $num -lt 85 && $num -ge 70 ]
then
echo "good"
elif (( $num <= 100 )) && (( $num >= 85 )) //对于有语言基础的人来说,这种写法让人觉得很舒服,不要忘了是双小括号
then
echo "very good"
else
echo "num is wrong"
fi //if要有结束标签的,根XML很像,不闭合,就报错
exit 0
五,case语句
#!/bin/sh
case $1 in
start)
echo "start ok"
;; //注意一点,要注意是双分号
stop)
echo "stop ok"
;;
restart)
echo "restart ok"
;;
*)
echo "no param"
;;
esac //注意闭合标签
exit 0
[root@krlcgcms01 forif]# sh c1.sh stop
stop ok
相关推荐
### Shell基本语法详解 #### 一、合理使用注释 在Shell脚本中,注释是一种非常重要的元素,它能够帮助我们理解脚本的工作原理,同时也方便后续的维护与更新。注释通常以`#`符号开头,在此之后的内容会被Shell解释...
学习这些脚本实例可以帮助初学者理解Shell脚本的基本语法和工作原理,以及如何将它们应用到实际问题中。通过实践这些示例,你可以熟悉各种命令的使用,学会如何编写逻辑清晰、功能完善的脚本,提高工作效率。记住,...
在这个主题中,我们将深入探讨shell编程的基本语法和实用实例。 1. **基本结构** Shell脚本通常以`#!/bin/bash`作为首行,指定使用bash shell解释器来执行脚本。这被称为“shebang”或“hash-bang”。 2. **变量*...
- **语法高亮**:帮助用户快速识别不同类型的代码和文本。 - **操作方便**:提供直观的用户界面,便于进行文本编辑。 - **缺点**: - 需要在图形界面环境下运行,对于远程操作来说可能略显不便。 #### 罗列文件...
- 示例代码:`echo -e "这里写需要打印的内容"` - **执行脚本**: - **方法一**:首先赋予脚本执行权限,使用 `chmod 755 hello.sh` 命令。然后可以通过 `/path/to/hello.sh` 的形式执行脚本。 - **方法二**:...
Shell 的灵活性和广泛的应用场景使其成为系统管理员和开发人员不可或缺的工具。 ##### 为什么学习 Shell 编程? - **自动化任务**:Shell 脚本能够帮助自动化日常任务,提高工作效率。 - **系统管理**:对于 Linux ...
在Shell脚本编程中,有时候我们会遇到命令行过长,导致代码可读性和维护性下降。在这种情况下,需要采取适当的方法来处理长命令的换行。本文将详细讲解如何在Shell中优雅地处理长命令的换行问题。 首先,我们可以...
"linux示例代码.rar"可能包含各种编程语言(如C、C++、Python、Shell脚本等)的代码片段,用于帮助用户理解和实践Linux环境下的编程概念。下面我们将详细探讨一些可能涉及的Linux知识点。 1. **命令行接口(CLI)**: ...
基于 MM32 MCU 的 shell 脚本源码还提供了一个示例代码,展示了如何使用 shell 来实现命令行接口。该示例代码包括了 shell 的初始化、命令解析、命令执行和命令 history 记录等几个方面。 在 shell 的实现中,还...
- **语法**:包括变量定义、条件语句(if...else)、循环结构(for, while)、函数定义等基本元素。 - **注释**:以`#`字符开始的行被视为注释,用于解释代码。 2. **文件操作** - **创建、删除、移动文件**:`...
### Shell Script 在 UNIX 系统中的应用与...掌握 Shell 脚本的基本语法和高级技巧对于系统管理员和开发者来说是非常重要的。通过本文介绍的内容,希望读者能够理解 Shell 脚本的基础知识及其在实际工作中的应用价值。
学习Shell脚本,首先需要熟悉基本的语法元素,如变量、条件语句、循环、函数和重定向等。例如,变量用于存储数据,可以通过"$"符号来访问;条件语句(如if-else结构)用于根据特定条件执行不同的命令;循环(如for和...
- **函数定义**: 定义可重用的代码段以简化复杂任务的处理。 #### 五、示例解析 以案例1为例,该脚本旨在创建一个目录并复制所有 `.log` 文件到该目录,然后删除原始目录中的所有 `.logs` 文件。但是,该脚本存在...
在IT行业中,Unix Shell编程是一种极其重要的技能,尤其对于系统管理员和开发者来说。Shell作为Unix系统中的命令解释器,不仅提供了交互...在实践中遇到问题,可以查阅`UNIX.SHELL_CODE`中的示例代码,进一步加深理解。
- 示例代码: ```bash $ cat prog1.sh date ``` 2. **赋予Shell文件执行权限**: - 新建的文本文件默认没有执行权限,需要通过`chmod`命令赋予执行权限。 - 示例代码: ```bash $ chmod 740 prog1.sh ``` 3. ...
通过深入学习和实践本书中的示例,你将能够熟练掌握Shell脚本编程技巧,解决日常系统管理中的各种问题,实现自动化任务,甚至开发出复杂的系统工具。Shell脚本因其简洁、灵活和强大的功能,成为Linux世界中不可或缺...
标题中的"shell-学习.rar"表明这是一个关于Shell脚本编程的学习资源压缩包,通常包含教程、示例代码或练习题。Shell是Unix/Linux系统中的一种命令行解释器,它允许用户通过文本命令与操作系统交互,执行各种任务。...
本文将深入探讨Shell脚本的基础知识,包括基本语法、变量、控制结构、函数以及常用的内置命令。 首先,Shell脚本的开头通常会指定解释器,例如`#!/bin/bash`,这告诉系统使用Bash shell来执行脚本中的命令。在描述...
为了更好地理解和应用这些知识点,开发者需要熟悉VB的基本语法,理解进程管理和线程同步的概念,以及如何在VB环境中调用操作系统级别的命令。通过研究和分析压缩包中的源码,可以深化这些技能,同时也可以从中学习到...