linux函数与数组
1. 函数的定义
方法1:
function_name () {
statement
} 方法2:
function function_name () {
statement
} --先定义后使用 例:模拟用函数写一个服务启动,关闭,重启的脚本 (要求有start,stop,restart,status) --以sshd服务为例写的服务脚本
#!/bin/bash start() {
pid=`pidof sshd` if [ -z $pid ];then
/usr/sbin/sshd
echo "正在启动 sshd: [确定]"
else
echo "服务sshd(pid $pid)已存在"
fi
} function stop() {
pid=`pidof sshd` if [ ! -z $pid ];then
echo "服务sshd 已停"
else
killall sshd &> /dev/null
echo "停止 sshd: [确定]"
fi } restart() {
pid=`pidof sshd` if [ -z $pid ]; then
echo "停止 sshd:[失败]"
/usr/sbin/sshd
echo "正在启动 sshd:[确定]"
else
echo "停止 sshd:[确定]"
/usr/sbin/sshd
echo "正在启动 sshd:[确定]"
fi } status(){
pid=`pidof sshd`
if [ -z $pid ];then
echo "服务sshd 已停"
else
echo "服务sshd (pid $pid)正在运行..."
fi } case "$1" in
start )
#启动sshd服务
start
;;
stop )
# 停止sshd
stop
;;
restart )
restart
;;
status )
status
;;
* )
echo "用法: /root/ssh2.sh {start|stop|restart|status}"
esac 2. 函数的参数
fun() {
echo $1 --接收参数,$1=arg1,$2=arg2,$0是文件名
echo $2
}
fun arg1 arg2 ... --传参
实例: #!/bin/bash add() {
echo $1+$2 | bc
}
sub() {
echo $1-$2 | bc
} # 使用$1来接受add或sub,$2$3分别是2个数字
case "$1" in
add )
add $2 $3
;;
sub )
sub $2 $3
;;
* )
exit
esac 3. 函数的返回值
fun(){
return value --使用return返回一个值(数字,只能是整数)
} fun --调用函数
echo $? --函数的返回值 #!/bin/sh
#函数传参
add() {
return $[$1+$2]
}
sub() {
return $[$1-$2]
} case "$1" in
add )
add $2 $3
echo "$2+$3的和是$?"
;;
sub )
sub $2 $3
echo "$2-$3的差是$?"
;;
* )
echo "usage: sh $0 arg1 arg2 arg3"
esac
------------------------ 使用read输入一个整数,把数字中的所有数字转换成英文单词
如:2345 转换为 two three four five 提示:需要计算输入的整数的长度,然后进行循环,截取整数中的单一字符(cut -c),对截取的单一字符
#!/bin/bash read -p "请输入一个整数:" num length=`echo ${#num}` #${#string} 返回$string的长度 translate() {
case "$1" in
0 )
echo -n " zero "
;;
1 )
echo -n " one "
;;
2 )
echo -n " two "
;;
3 )
echo -n " three "
;;
4 )
echo -n " four "
;;
5 )
echo -n " five "
;;
6 )
echo -n " six "
;;
7 )
echo -n " seven "
;;
8 )
echo -n " eight "
;;
9 )
echo -n " nine "
esac
} for (( i=1; i<=$length; i++ ))
do
char=`echo $num |cut -c$i`
translate $char
done
echo 三. 数组 数组的定义: # abc=( 1 2 a b "sfsda sf sfdsa" ) --定义一个数组,可以是数字,字母,或者字符串 # echo ${abc[0]} --数组的下标是0不是1
1
# echo ${abc[1]}
2
# echo ${abc[2]}
a
# echo ${abc[3]}
b
# echo ${abc[4]}
sfsda sf sfdsa --查看数组的全部值
# echo ${abc[*]}
1 2 a b sfsda sf sfdsa
# echo ${abc[@]}
1 2 a b sfsda sf sfdsa --查看数组的个数
# echo ${#abc[*]}
5 # array3=(`ifconfig eth0|grep Mask`)
# echo ${array3[0]}
inet
# echo ${array3[1]}
addr:10.1.1.35
# echo ${array3[2]}
Bcast:10.1.1.255
# echo ${array3[3]}
Mask:255.255.255.0 echo ${array[2]} | cut -d: -f2
linux函数与数组的更多相关文章
- Linux C 程序 函数,数组,指针,gdb调试器(SEVEN)
函数,数组,指针,gdb调试器 1.函数定义 如果明确指定返回类型,默认为int 参数传递:实参对形参的参数传递是单向的,实参只是把自己的值赋给形参. 形参的 ...
- typedef 函数指针 数组 std::function
1.整型指针 typedef int* PINT;或typedef int *PINT; 2.结构体 typedef struct { double data;}DATA, *PDATA; //D ...
- awk(流程控制、内置变量、内置函数、数组)
摘自:http://bbs.51cto.com/thread-883948-1-1.html awk(流程控制.内置变量.内置函数.数组) ... 参考其他的资料,给大家看看.一.awk流程控制语句 ...
- PHP使用in_array函数检查数组中是否存在某个值
PHP使用 in_array() 函数检查数组中是否存在某个值,如果存在则返回 TRUE ,否则返回 FALSE. bool in_array( mixed needle, array array [ ...
- C++基础——函数指针 函数指针数组
==================================声明================================== 本文版权归作者所有. 本文原创,转载必须在正文中显要地注明 ...
- C++程序设计(关于函数中数组传递的一点心得)
题目: 10个学生考完期末考试评卷完成后,老师需要划出及格线,要求如下: (1) 及格线是10的倍数: (2) 保证至少有60%的学生及格: (3) 如果所有的学生都高于60分,则及格线为60分: ...
- C#委托与C语言函数指针及函数指针数组
C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用 ...
- PHP中使用数组指针函数操作数组示例
数组的内部指针是数组内部的组织机制,指向一个数组中的某个元素.默认是指向数组中第一个元素通过移动或改变指针的位置,可以访问数组中的任意元素.对于数组指针的控制PHP提供了以下几个内建函数可以利用. ★ ...
- C/C++ 一段代码区分数组指针|指针数组|函数指针|函数指针数组
#include<stdio.h> #include<stdlib.h> #include<windows.h> /* 举列子说明什么是函数指针 */ //以一个加 ...
随机推荐
- Linux的软件安装tomcat 以及jdk
因为tomcat的启动需要jdk,所以我们先安装jdk,安装完成后再安装tomcat 具体的文件大家可以到官网下载,下面介绍安装步骤 目录 jdk安装 1.通过xftp或者其他方式将安装包传到我们的L ...
- C++ 类成员指针
C++的类成员指针是一种奇葩的指针. 假设现在我们要表示一个三维的点,现在有两种定义方式: struct point1{ int x, y, z; }; struct point2{ int c[3] ...
- Luffy /3/ 前台主页搭建&轮播图接口
目录 前台主页搭建 components/Homeviwe.vue components/Banner.vue components/Header.vue components/Footer.vue ...
- 【HCIE】ipv6之6to4隧道如何计算48位前缀地址
6to4隧道支持router-router,host-router,router-host,host-host 采用专用6to4地址,前缀为2002::/16 其中如何结合ipv4地址? 2002:i ...
- vsphere部署OVF虚拟机提示未能部署OVF软件包
一.从vshere平台导出OVF,准备导入到另一个vsphere平台提示:传输入失败:Error transferring file to https://172.22.1.85/nfc/5267db ...
- python学习-Day39-HTML-form表单
目录 HTML-form表单 form表单 属性action input标签(输入元素) 文本域(Text Fields) 密码字段 单选按钮(Radio Buttons) 复选框(Checkboxe ...
- XCTF练习题---MISC---What-is-this
XCTF练习题---MISC---What-is-this flag:AZADI TOWER 解题步骤: 1.观察题目,下载附件 2.下载后发现是个压缩包,文件内容不清楚,试试改为压缩包看看效果,发现 ...
- 【Electron】在 WSL2 中 打包 electron Linux 版本
[Electron]在 WSL2 中 打包 electron Linux 版本. 安装 WSL 我使用的是 Ubuntu 20.04.4 LTS 的版本. 安装 WSL 文档地址:https://do ...
- Hadoop(四)C#连接Hive
Hive Hive将HiveQL(类sql语言)转为MapReduce,完成数据的查询与分析,减少了编写MapReduce的复杂度.它有以下优点: 学习成本低:熟悉sql就能使用 良好的数据分析:底层 ...
- 再见 FTP/SFTP!是时候拥抱下一代文件传输利器了!
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 两台电脑之间该如何传送档案,其实方法有超多种的,像是 FTP 或透过 SSH 方式来传送档案, ...