美文网首页Shell
shell脚本编程 - 变量和函数

shell脚本编程 - 变量和函数

作者: 会飞的蜗牛07 | 来源:发表于2019-01-21 14:46 被阅读1次

变量和函数是编程语言的基础组成部分。

变量

默认变量

默认变量指的是shell运行已经约定的变量表达形式,常用的有

变量 说明
$0 执行脚本名
$n n表示第几个参数,$1表示第一个参数
$# 传递给脚本或函数的参数个数
$* 传递给脚本或函数的所有参数
$? 上个命令的退出状态,或函数的返回值

字符串

赋值

字符串的赋值分为两种,一种是直接赋值,例如

name="ketty"

另外一种是利用命令结果赋值,例如

files=`ls`

字符串处理

  1. 获取字符串长度
${#name}
  1. 截取字符串
${var#*//} # 从左边开始,删除第一个//号及左边的所有字符
${var##*/} # 从左边开始,删除最后(最右边)一个/号及左边的所有字符
${var:0:5} # 从左边第一个字符开始,截取长度5
${var:7} # 从左边第8个字符开始,一直到结束
${var%/*} # 从右边开始,删除第一个/号及右边的字符
${var%%/*} #从右边开始,删除最后(最左边)一个 / 号及右边的字符
${var:0-7:3} # 从右边第7个字符开始,截取长度3
${var:0-7} # 从右边第7个字符开始,一直到结束
  1. 字符串拼接
name=${xing}_${ming}

环境变量

直接执行一个脚本文件是在一个子shell中运行的,而source则是在当前shell环境中运行的,所以当需要设置环境变量时需要使用source set_env.sh而不是./set_env.sh

数组

  1. 定义
array_name=(value0 value1 value2 value3)
  1. 读取数组元素
${array_name[n]}​
  1. 获取数组长度
${#array_name[@]}
  1. 获取数组内容
${array_name[@]}

可以看出,array_name[@]表示数组,array_name表示字符串。

函数

定义和调用

function 函数名()
{
  action
}

函数名 参数列表

入参

函数的入参可以参考上面的默认变量小节。

参考文档
[1]: Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
[2]: shell脚本字符串截取的8种方法
[3]: 利用shell脚本添加环境变量

相关文章

  • shell脚本编程 - 变量和函数

    变量和函数是编程语言的基础组成部分。 变量 默认变量 默认变量指的是shell运行已经约定的变量表达形式,常用的有...

  • shell脚本基础

    编写脚本 编程基础 shell脚本 创建shell脚本 变量 运算 测试 配置用户的环境

  • 【shell笔记>脚本】创建和使用shell函数

    来源: Linux命令行与shell脚本编程大全 博客地址,推荐电脑点 内容 基本的脚本函数返回值在函数中使用变量...

  • shell函数定义和引用

    shell脚本中函数的定义和使用 Bash(Bourne Again shell)跟其他编程语言一样也支持函数,一...

  • shell调用其他shell脚本中的变量、函数

    在Shell中要如何调用别的shell脚本,或别的脚本中的变量,函数呢? 方法一: . ./subscript.s...

  • shell基础(一)

    一:shell脚本内容解释器 二:shell脚本的执行方式 三:变量 变量分为:环境(全局)变量和普通(局部)变量...

  • Bash shell

    Shell脚本编程30分钟入门 1. $开头shell变量的含义: $1, $2, $3, ... are the...

  • 78.shell编程

    shell编程 Shell脚本,是一种为shell编写的脚本程序。 Shell编程跟JavaScript、Pyth...

  • Bash编程013——环境变量

    Bash编程013——环境变量 环境变量可以帮助提升你的Shell体验。很多程序和脚本都通过环境变量来获取系统信息...

  • Linux之Shell脚本编程(二)

    在上一篇博文中,主要介绍了Shell脚本编程的背景,怎样创建人生中第一个Shell脚本以及Shell变量等内容。接...

网友评论

    本文标题:shell脚本编程 - 变量和函数

    本文链接:https://www.haomeiwen.com/subject/aetcjqtx.html