博客
关于我
shell脚本变量
阅读量:75 次
发布时间:2019-02-26

本文共 1757 字,大约阅读时间需要 5 分钟。

Shell 变量与脚本编写指南

Shell 变量是脚本编写中不可或缺的重要工具,熟练掌握变量的使用方法能够显著提升脚本的灵活性和实用性。本文将详细介绍 Shell 变量的相关知识,包括自定义变量、位置变量、内嵌变量、环境变量以及数组变量等。

自定义变量

在 Shell 中,变量的命名和赋值操作非常灵活。与其他编程语言不同,Shell 不需要事先声明变量,变量在使用时就会被定义。因此,在赋值时需要注意以下几点:

  • 空格敏感性:Shell 对空格高度敏感,变量名和赋值之间必须严格遵守格式要求。
  • 范围确定:使用花括号 {} 可以明确变量的作用范围,避免命名冲突。

正确的赋值格式应为:

$NEWENV=123

如果格式不正确,Shell 将无法识别变量。

此外,变量范围可以通过以下方式限定:

$BRACE=123$echo $BRACEEEE$echo ${BRACE}EEE123EEE

通过这种方式,可以确保变量值不会因上下文变化而受到影响。

位置变量

位置变量用于访问脚本执行时的命令参数,具体包括以下几个特殊变量:

  • $0:表示脚本的名称。
  • $1$9:分别表示脚本的第 1 到第 9 个参数。
  • ${10}:表示第 10 个参数及之后的所有参数(需要使用花括号)。
  • 在函数定义中,参数列表中的 $1$n 用于接收外部传递的参数,而 $0 仍然表示脚本名称。

示例:

$cat ./shell.sh#!/bin/bashecho "$10"echo "${10}"./*.sh 11 22 33 44 55 66 77 88 99 0011000

当脚本接收多个参数时,使用位置变量能够实现灵活的参数处理。

内嵌变量

内嵌变量用于获取当前进程的信息,常见的内嵌变量包括:

  • #:表示当前进程的参数个数,通常用于循环控制。
  • @:表示命令行传递的所有参数。如果放在双引号内,会展开为单个参数列表。
  • *:表示命令行传递的所有参数,和 $@ 的效果类似,但没有展开功能。

示例:

while [ $# != 0 ] do  case $1 in    ...  esac  shiftdone

此外,$? 用于获取前一个命令的退出状态,$$ 表示当前进程的进程 ID。

环境变量

环境变量是一组预定义的变量,用于配置系统的运行环境。常见的环境变量包括:

  • HOME:表示用户的家目录。
  • PATH:表示可执行文件的路径。
  • IFS:表示字段分隔符,默认为空格或 tab。
  • LINENO:表示脚本中刚执行的行号。
  • PPID:表示父进程的进程 ID。

环境变量的值通常通过 export 命令传递给子进程。例如:

$echo $LANG en_AU.UTF-8$echo "$LINENO" 8$echo "$PATH" /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/linux/toolchain/gcc-4.6.4/bin:.$echo "$PPID" 2647$ps auxUSER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMANDlinux     2647  0.0  2.2 110152 11540 ?        Rl   07:51   0:01 gnome-terminal$echo "$PWD" /home/linux

数组变量

Shell 支持数组变量,其定义方式为:

$arr=(0 1 2 var)

通过 ${arr[n]} 可以访问数组中指定位置的元素,$arr[@] 则表示数组的所有元素。

数组元素可以单独赋值:

$arr[3]=qq

并通过以下命令查看数组信息:

$echo "${arr[@]}" 0 1 2 qq$echo "${arr[*]}" 0 1 2 qq

数组的长度可以通过 ${#arr[@]}${#arr[*]} 查询。

通过以上知识,读者可以更高效地编写 Shell 脚本,充分发挥 Shell 的强大功能。

转载地址:http://sccz.baihongyu.com/

你可能感兴趣的文章
Nodejs+Express+Mysql实现简单用户管理增删改查
查看>>
nodejs+nginx获取真实ip
查看>>
nodejs-mime类型
查看>>
NodeJs——(11)控制权转移next
查看>>
NodeJS、NPM安装配置步骤(windows版本)
查看>>
NodeJS、NPM安装配置步骤(windows版本)
查看>>
nodejs下的express安装
查看>>
nodejs与javascript中的aes加密
查看>>
nodejs中Express 路由统一设置缓存的小技巧
查看>>
nodejs中express的使用
查看>>
Nodejs中搭建一个静态Web服务器,通过读取文件获取响应类型
查看>>
Nodejs中的fs模块的使用
查看>>
NodeJS使用淘宝npm镜像站的各种姿势
查看>>
NodeJs入门知识
查看>>
nodejs包管理工具对比:npm、Yarn、cnpm、npx
查看>>
NodeJs单元测试之 API性能测试
查看>>
nodejs图片转换字节保存
查看>>
nodejs在Liunx上的部署生产方式-PM2
查看>>
nodejs基于art-template模板引擎生成
查看>>
nodejs字符与字节之间的转换
查看>>