linux利用位置参数数组,Shell编程1_变量、参数和数组
目录
一、从变量开始
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_变量、参数和数组相关推荐
- linux写程序四则运算,Shell编程之变量及四则运算
Shell的学习目标 Shell的基本语法结构: 如:变量的定义.条件判断.循环语句(for.until.while).分支语句.函数和数组等. 基本正则表达式的应用 文件处理:grep.sed.aw ...
- adb shell 修改文件名_从零开始学Linux运维|27.Shell编程(函数与参数的传递)
1.函数 shell可以定义函数,方便调用,定义函数的格式 中括号"[]"内的内容可以省略 [ function ] 函数名 [()]{执行语句;[return 返回值;]} 写一 ...
- Linux学习——shell编程之变量
shell编程之变量:Linux shell编程基础中的变量. 包括Bash变量的分类和各变量的详细使用,如:用户自定义变量.环境变量.语系变量.位置参数变量和预定义变量. 1:什么是Bash变量? ...
- linux系统——Shell编程之变量解释
linux系统--Shell编程之变量解释 - Shell能做什么 自动化批量系统初始化程序 (update,软件安装,时区设置,安全策略-) 自动化批量软件部署程序 (LAMP,LNMP,Tomca ...
- Linux知识点回顾之shell编程
Linux知识点回顾之shell编程 shell编程 1 基本介绍 1.1 Shell 脚本 1.2 Shell 环境 1.3 第一个shell编程 1.4 运行 Shell 脚本有两种方法: 1.5 ...
- (二)shell编程之变量定义与使用
shell编程之变量定义与使用 SHELL编程模块课程目标 ① Shell的基本语法结构 如:变量定义.条件判断.循环语句(for.until.while).分支语句.函数和数组等: ② 基本正则表达 ...
- linux修改某个用户的数组,linux-shell编程1:变量和数组
Shell 用户与系统内核之间交流平台 Shell类型 /bin/sh /bin/bash(系统默认bash) /bin/tcsh /bin/csh /etc/shells 放置当前系统可用shell ...
- 【Linux学习笔记④】——Shell程序设计【变量 输入与输出 条件表达式 判断语句 循环语句 Shell函数】
⌛️ 文章目录 一.Shell 概述 二.Shell 脚本的定义与执行 2.1 Shell 脚本的定义 2.2 Shell 脚本的执行 三.Shell 变量 3.1 用户自定义变量 3.2 环境变量 ...
- 【Linux系统管理】10 Shell 编程进阶篇
六 Shell 编程 6.1 正则表达式 6.1.1 概述 还记得我们在上一章说过正则表达式和通配符的区别(正则表达式用来在文件中匹配符合条件的字符串,通配符用来匹配符合条件的文件名)吗?其实这种区别 ...
最新文章
- 路由器中Rom/Ram/NVRAM/FLASH的区别
- 科技管理的第一个作业
- 一些研究SLAM的团队和网站 [2008年10月20日]
- 属性被分为八大类不包括_家庭软装八大类有哪些 软装八大类风格有什么特点...
- 克莱因瓶为何永远无法装满?科学家发现:宇宙或许就是克莱因瓶!
- mvc做网站怎么在mvc中直接访问.html网页 [问题点数:20分]
- qpushbutton里面的文字怎么换行_ipad读PDF必备,OCR局部识别文字并快速提取,免费的buff你要不要?...
- Magento 获取分类的父分类和子分类
- [转载] Python元组操作及方法总结
- 2019.03.25 bzoj4572: [Scoi2016]围棋(轮廓线dp)
- Java、JSP酒店客房管理系统
- (转)sonicstage 完整删除的方法
- 如何查看linux的日志
- git an error occurred
- 请不用条件转移指令JG,JGE,JL,JLE等指令实现如下程序片段的功能
- 高频交易(二)浅谈高频交易中比较成熟的一些交易策略
- 快速进行服务接口监控
- python 导入的nan怎么解决_如何在Python中使用Lmfit解决NaN值错误
- 跟上学期给我们带过课的那个夹克男一样
- matlab海杂波统计建模及CFAR阈值分割