目录

一、从变量开始

1.环境变量

export命令

2.系统自带的环境变量

3、变量的定义和赋值

二、使用参数

参数的获取

三、数组的基本使用

1.数组的定义

2.数组的删除

3.数组的切片和替换

4.关联数组

一、从变量开始

Shell变量:变量的定义、使用、更新、删除、命名规范、赋值规范

Shell变量的分类:局部变量、环境变量、全局变量

1.环境变量

Linux是一个多租户的操作系统,针对不同的用户都会有一个专有的运行环境

对所有用户生效的环境变量 /etc/profile

对特定用户生效的环境变量 ~/.bashrc或者~/.bash_profile

临时有效的环境变量        脚本或命令使用export

export命令

Linux export 命令用于设置或显示环境变量。

在 shell 中执行程序时,shell 会提供一组环境变量。export 可新增,修改或删除环境变量,供后续执行的程序使用。export 的效力仅限于该次登陆操作。

export [-fnp][变量名称]=[变量设置值]

参数说明:

-f  代表[变量名称]中为函数名称。

-n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。

-p  列出所有的shell赋予程序的环境变量。

export -p //列出当前的环境变量

2.系统自带的环境变量

列表一

列表二

3、变量的定义和赋值

变量的值为指令,可用使用反撇号,或 $()来引用

DATE=`date`

DATE=$(date)

变量的赋值分为:直接赋值、单引号赋值、和双引号赋值

直接赋值变量:DIR=/tmp,其中 DIR 为变量名,/tmp 为值

单引号赋值:单引号赋值方式为单引号里面的内容是什么就输出什么,此种赋值方式适用于不希望解析变量的场景,仅显示纯字符串。

[root@master ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[root@master ~]# DIR='$PATH'

[root@master ~]# echo $DIR

$PATH

双引号赋值:双引号赋值可以解析引号内的变量或执行命令,即不是将双引号中的变量名和命令原样输出,而是解析其中变量的内容,然后进行输出。

[root@master ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[root@master ~]# DIR="$PATH"

[root@master ~]# echo $DIR

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

二、使用参数

Shell参数:位置参数、特殊参数、参数传递

shell中的特殊参数

参数的获取

脚本传递参数,就是在运行脚本的时候通过位置参数传递进脚本内,每个参数利用一个空格来进行分割,如果传递的参数本身就有空格,则可以利用 ""来引起来,作为一个整体传递,在脚本内通过$n来获取。

三、数组的基本使用

数组的定义和元素获取

1.数组的定义

数组类似于变量定义,只不过将里面的值用小括号括起来,其中每个元素使用空格分割。Shell 是弱类型的,数组中元素的类型可以不一样,例如其中可以包含数字与字符串。

ARG1=(1 2 3 "hello Shell")

获取数组全部元素使用 ${ARG[*]} 或${ARG[@]}。

获取数组全部下标使用 ${!ARG[*]} 或 ${!ARG[@]}。

数组长度及数组中元素的个数,可以利用 ${#ARG[*]} 或 ${#ARG[@]}。

2.数组的删除

删除数组可以使用 unset,unset ARG1[num] 可以删除对应下标的数组元素,如果不带下标则删除数组的全部元素。

[root@master scripts]# echo ${ARG1[@]}

100 3 hello Shell 10

[root@master scripts]# unset ARG1[0]//删除下标为0的元素

[root@master scripts]# echo ${ARG1[@]}

3 hello Shell 10

[root@master scripts]# unset ARG1 //删除整个数组元素

[root@master scripts]# echo ${ARG1[@]}

3.数组的切片和替换

通过 ${AEG1[@或*]:起始位置:长度} 对原数组进行切片,返回的为字符串,例如:

[root@master scripts]# echo ${ARG1[@]}

1 2 3 hello Shell

[root@master scripts]# echo ${ARG1[@]:0:2}//从第1个元素往后2个元素进行切片

1 2

替换数组中的某一个元素,例如我们将 ARG1 数组中的第 1 个元素替换为 110。${ARG1[@]/1/110}

[root@master scripts]# echo ${ARG1[@]}

1 2 3 hello Shell

[root@master scripts]# echo ${ARG1[@]/1/110}

110 2 3 hello Shell

4.关联数组

关联数组是可以用字符串当作数组下标的一类数组,在使用关联数组前,必须先使用declare -A声明它,例如:

[root@master ~]# declare -A ARGFILE//定义管理数组

[root@master ~]# ARGFILE=([name1]=Shell [name2]=linux [name3]=arg)//关联数组元素赋值

[root@master ~]# echo ${ARGFILE[@]}//查看所有元素

arg linux Shell

[root@master ~]# echo ${ARGFILE[name1]}//查看索引为name1的元素值

Shell

linux利用位置参数数组,Shell编程1_变量、参数和数组相关推荐

  1. linux写程序四则运算,Shell编程之变量及四则运算

    Shell的学习目标 Shell的基本语法结构: 如:变量的定义.条件判断.循环语句(for.until.while).分支语句.函数和数组等. 基本正则表达式的应用 文件处理:grep.sed.aw ...

  2. adb shell 修改文件名_从零开始学Linux运维|27.Shell编程(函数与参数的传递)

    1.函数 shell可以定义函数,方便调用,定义函数的格式 中括号"[]"内的内容可以省略 [ function ] 函数名 [()]{执行语句;[return 返回值;]} 写一 ...

  3. Linux学习——shell编程之变量

    shell编程之变量:Linux shell编程基础中的变量. 包括Bash变量的分类和各变量的详细使用,如:用户自定义变量.环境变量.语系变量.位置参数变量和预定义变量. 1:什么是Bash变量? ...

  4. linux系统——Shell编程之变量解释

    linux系统--Shell编程之变量解释 - Shell能做什么 自动化批量系统初始化程序 (update,软件安装,时区设置,安全策略-) 自动化批量软件部署程序 (LAMP,LNMP,Tomca ...

  5. Linux知识点回顾之shell编程

    Linux知识点回顾之shell编程 shell编程 1 基本介绍 1.1 Shell 脚本 1.2 Shell 环境 1.3 第一个shell编程 1.4 运行 Shell 脚本有两种方法: 1.5 ...

  6. (二)shell编程之变量定义与使用

    shell编程之变量定义与使用 SHELL编程模块课程目标 ① Shell的基本语法结构 如:变量定义.条件判断.循环语句(for.until.while).分支语句.函数和数组等: ② 基本正则表达 ...

  7. linux修改某个用户的数组,linux-shell编程1:变量和数组

    Shell 用户与系统内核之间交流平台 Shell类型 /bin/sh /bin/bash(系统默认bash) /bin/tcsh /bin/csh /etc/shells 放置当前系统可用shell ...

  8. 【Linux学习笔记④】——Shell程序设计【变量 输入与输出 条件表达式 判断语句 循环语句 Shell函数】

    ⌛️ 文章目录 一.Shell 概述 二.Shell 脚本的定义与执行 2.1 Shell 脚本的定义 2.2 Shell 脚本的执行 三.Shell 变量 3.1 用户自定义变量 3.2 环境变量 ...

  9. 【Linux系统管理】10 Shell 编程进阶篇

    六 Shell 编程 6.1 正则表达式 6.1.1 概述 还记得我们在上一章说过正则表达式和通配符的区别(正则表达式用来在文件中匹配符合条件的字符串,通配符用来匹配符合条件的文件名)吗?其实这种区别 ...

最新文章

  1. 路由器中Rom/Ram/NVRAM/FLASH的区别
  2. 科技管理的第一个作业
  3. 一些研究SLAM的团队和网站 [2008年10月20日]
  4. 属性被分为八大类不包括_家庭软装八大类有哪些 软装八大类风格有什么特点...
  5. 克莱因瓶为何永远无法装满?科学家发现:宇宙或许就是克莱因瓶!
  6. mvc做网站怎么在mvc中直接访问.html网页 [问题点数:20分]
  7. qpushbutton里面的文字怎么换行_ipad读PDF必备,OCR局部识别文字并快速提取,免费的buff你要不要?...
  8. Magento 获取分类的父分类和子分类
  9. [转载] Python元组操作及方法总结
  10. 2019.03.25 bzoj4572: [Scoi2016]围棋(轮廓线dp)
  11. Java、JSP酒店客房管理系统
  12. (转)sonicstage 完整删除的方法
  13. 如何查看linux的日志
  14. git an error occurred
  15. 请不用条件转移指令JG,JGE,JL,JLE等指令实现如下程序片段的功能
  16. 高频交易(二)浅谈高频交易中比较成熟的一些交易策略
  17. 快速进行服务接口监控
  18. python 导入的nan怎么解决_如何在Python中使用Lmfit解决NaN值错误
  19. 跟上学期给我们带过课的那个夹克男一样
  20. matlab海杂波统计建模及CFAR阈值分割

热门文章

  1. 设计模式学习笔记(5) - 策略模式
  2. iPhone 不能读取plist文件!?
  3. .net知识和学习方法系列(三)CSharp中控件台的输入输出
  4. 保持 Go 模块兼容
  5. Linux 命令(133)—— groupdel 命令
  6. asp.net MVC:CheckBoxFor 绑定 nullablebool 类型
  7. gdb调试中出现optimized out
  8. form图片上传遇到错误
  9. 转-TabHost组件(二)(实现底部菜单导航)
  10. MS sql server 基础知识回顾(二)-表连接和子查询