zoukankan      html  css  js  c++  java
  • 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
    

      

  • 相关阅读:
    如何激活myecilpse 10
    Myecilpse 10里安装配置maven
    spring mvc 模糊查询防注入
    javascript 取整,取余数
    spring3-mvc实例-信息转换
    CSS中怎么让DIV居中
    git
    浏览器窗口的大小
    如何限制文本框中的字数
    jquery如何设置控件位置
  • 原文地址:https://www.cnblogs.com/The-day-of-the-wind/p/12064426.html
Copyright © 2011-2022 走看看