shell脚本变量,数组与函数
来源:互联网 发布:php垃圾回收机制 编辑:程序博客网 时间:2024/05/21 19:47
- 一变量
- 1变量的定义
- 3变量的作用域
- 3系统变量
- 二数组
- 1定义数组
- 2获取数组长度 arr
- 3获取所有元素 arr
- 4截取部分元素 arrstartlength
- 5替换数组元素的值 arrvalreplace
- 6删除数组以及元素 unset arrunset arrn
- 7赋值数组 newarrarr
- 8链接数组newarrarr1arr1 arr2两数组中间有空格
- 8加载文件内容到数组arrcat filename
- 三函数
- 1函数的定义
- 2函数的调用
- 3返回值 可以用return返回但是只能返回0-255之间的数
- 4函数的参数
- 5函数库文件的使用使得代码可以重用
- 一变量
(一)变量
(1)变量的定义
##等号两边不能有空格value=123value="jing"declare -i value=100
(3)变量的作用域
- 局部变量
- 需要使用local 定义
- 全局变量
例如:
#! /bin/bashfunc(){ echo "global v1 is $v1" #输出200全局变量 local v1=100 #局部变量只在函数内有效 echo local v1 is $v1 #输出100}vi=200funcecho global v1 is $v1 #输出200
(3)系统变量
但对脚本进行传参时,参数的值存放在系统变量中。
- $* 以“参数1” ”参数2“ “参数3”….的形式返回
- $#
- $@ 以“参数1 参数2 参数3….” 的形式返回
- $num num是数字,代表第num个参数
- $? 前一个命令或者函数的状态码
- $$ 返回本进程的ID
(二)数组
(1)定义数组
- 直接定义
- arr[0]=”jing”
- arr[1]=”ti”
- declare
- declare -a arr
- 元素值集合
- arr=(v0 v1 v2 ….)
- 通过键值
- arr=([0]=”one” [1]=”two” ….)
(2)获取数组长度 ${#arr[@]}
(3)获取所有元素 ${arr[@]}
(4)截取部分元素 ${arr[@]:start:length}
(5)替换数组元素的值 ${arr[@]/val/replace}
(6)删除数组以及元素 unset arr,unset arr[n]
(7)赋值数组 newarr=(“${arr[@]}”)
(8)链接数组newarr=(“arr1[@]"" {arr2[@]}”)两数组中间有空格。
(8)加载文件内容到数组arr=($(cat “filename”))
(三)函数
(1)函数的定义
function function_name(){ statement ...}
或
function_name(){ statement ...}
(2)函数的调用
function_name 参数1 参数2 .....
(3)返回值 可以用return返回,但是只能返回0-255之间的数。
例如:
#! /bin/bashfunc(){ val=$((11+22)) return $val}func echo $? #系统变量获得返回值
(4)函数的参数
例如:
#! /bin/bashfunc(){ val=$(($1+$2)) #如果函数参数超过9时,要使用$(10)才行 return $val}func 22 33 #传递参数echo $? #系统变量获得返回值
如果参数太多可以使用shift移动参数,其功能是将参数向左边移动一位,同时删除原来的第一个参数,因此没次shift一次$#就减去1。
例如:
#! /bin/bashfunc(){ while (($# > 0)) do echo $(1) shift done }func 0 1 2 3 5 6 7 8 9 10 #传递参数
有时候参数太多并需要分情况,这时候单纯的传参就不能满足需求了。此时需要另外一个函数来获得参数getopts().
一般形式:getopts optstring args
【optstring】形如”a:b:c” 如果字母后面跟冒号则说明可以为该选项提供参数值。同时该参数值保存到系统变量$OPTARGS中。
例如:
#! /bin/bash func() { while getopts "a:b:c" args do case $args in a) echo a‘s argument is $OPTARG ;; b) echo b‘s argument is $OPTARG ;; *) echo "having no argument " ;; esac done } func -a hello -b world
输出为:a‘s argument is hellob‘s argument is world
(5)函数库文件的使用,使得代码可以重用
例如test1.sh:
#! /bin/bashfun(){ if [ $1 -gt $2 ] then return $1 else { return $2 } fi}
这个脚本函数是比较两个数的大小,在另一个脚本中调用这个这个函数:
#! /bin/bash. test.sh #加入库文件fun 44 22 #直接调用函数echo $?
一般吧脚本文件放入一个固定的区域,当调用时使用相对路径或者是绝路径才能笑到脚本库。
阅读全文
1 0
- shell脚本变量,数组与函数
- shell脚本变量与参数
- shell脚本——数组变量
- Shell函数与数组
- linux shell脚本的基础与变量
- Linux命令行与shell脚本(13)--在函数中使用普通变量
- Shell中脚本变量和函数变量的作用域
- Shell中脚本变量和函数变量的作用域
- Shell中脚本变量和函数变量的作用域
- Shell中脚本变量和函数变量的作用域
- Shell中脚本变量和函数变量的作用域
- Shell中脚本变量和函数变量的作用域
- shell中脚本变量和函数变量的作用域
- Shell中脚本变量和函数变量的作用域
- Shell中脚本变量和函数变量的作用域
- Shell中脚本变量和函数变量的作用域
- Shell中脚本变量和函数变量的作用域
- Shell中脚本变量和函数变量的作用域
- codeforces 512C Fox And Dinner
- js或jquery实现页面打印
- 7个典型场景,学会互联网架构“解耦”
- 20171224
- 集成ceph与openstack(结合上一章)
- shell脚本变量,数组与函数
- win10桌面美化
- form表单转换为json
- python包tqdm安装及入门
- 用C语言开发一个BT下载软件 (四) ------ 代码实现-1-种子文件解析模块
- springboot(一)启动和配置文件的读取
- 反射的概念以及获取方法(一)
- UGUI基础
- solr