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> /* 举列子说明什么是函数指针 */ //以一个加 ...
随机推荐
- vue滚动分页加载
做了一个项目,要求将后台数据滚动加载. 滚动加载必须要求后台传的接口中由pageSize和pageIndex两个参数,来判断每次传数据的条数和数据的页码. 首先要判断滑轮是向上滚动还是向下滚动,可以在 ...
- partTwo自动出题程序第三阶段
课堂测试3: 2.可定制(数量/打印方式):输入大的数量值,测试一下系统是否崩溃,反向查找系统是否优化的余地: 3.定制操作数的个数: 4.定制是否有乘除法 5.定制是否有括号(随机加入) 6 .定制 ...
- 2021.08.16 P1300 城市街道交通费系统(dfs)
2021.08.16 P1300 城市街道交通费系统(dfs) P1300 城市街道交通费系统 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 城市街道交费系统最近创立了.一 ...
- 【面试普通人VS高手系列】b树和b+树的理解
数据结构与算法问题,困扰了无数的小伙伴. 很多小伙伴对数据结构与算法的认知有一个误区,认为工作中没有用到,为什么面试要问,问了能解决实际问题? 图灵奖获得者: Niklaus Wirth 说过: 程序 ...
- 【在下版本,有何贵干?】Dockerfile中 RUN yum -y install vim失败Cannot prepare internal mirrorlist: No URLs in mirrorlist
隐秘的版本问题---- Dockerfile中 RUN yum -y install vim失败Cannot prepare internal mirrorlist: No URLs in mirro ...
- “如何实现集中管理、灵活高效的CI/CD”在线研讨会精彩内容分享
"如何实现集中管理.灵活高效的CI/CD"在线研讨会精彩片段分享 片段主讲人:李培(西瓜刀) 大家好,我是李培.前面听文老师讲DevOps,包括CI/CD 的一些理论,也是挺有 ...
- 浅谈Nginx性能调优
点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! Linux系统参数优化 下文中提到的一些配置,需要较新的 ...
- drf-Serializers
What is serializers? serializers主要作用是将原生的Python数据类型(如 model querysets )转换为web中通用的JSON,XML或其他内容类型. DR ...
- .NET混合开发解决方案11 WebView2加载的网页中JS调用C#方法
系列目录 [已更新最新开发文章,点击查看详细] WebView2控件应用详解系列博客 .NET桌面程序集成Web网页开发的十种解决方案 .NET混合开发解决方案1 WebView2简介 .NE ...
- JUC自定义线程池练习
JUC自定义线程池练习 首先上面该线程池的大致流程 自定义阻塞队列 首先定义一个双向的队列和锁一定两个等待的condition 本类用lock来控制多线程下的流程执行 take和push方法就是死等, ...