shell变量、函数和数组以及字符串的截取
一、变量
1.shell变量名
(1)可以由字母、数字、下划线等字符组成。但是第一个字符必须是字母或者下划线。
(2)若果变量中包含下划线(_)则要特别注意,$project_svn_$date.tar.gz 和 {$project_svn}_$date.tar.gz。第一个shell理解为$project是一个变量。
2.变量的赋值:
variable=value
note:赋值运算符前后不能有空格,否则会报错。
3.变量分类:
内部变量是为了shell编程的而设定的变量。
本地变量是在代码块或函数中定义的变量,切尽在定义的范围内有效
参数变量是调用shell脚本或执函数传递的时的变量
环境变量是为了系统内核、系统命令和用户命令提供运行环境而设定的变量
用户自定义变量即普通变量或者临时变量
3.1内部变量
PWD:表示当前的工作目录,其变量值等于PWD内部命令的输出。
[centos@s201 ~]$ echo $PWD /home/centos
RANDOM: 每次引用这个变量,将会生成一个均匀分布0-32676 范围内的随机整数
SCONDS:脚本已经运行的时间
PPID:当前进程的父进程的进程ID
$?:表示最近一次执行的命令或者shell脚本的出口状态
3.2环境变量:
EDITOR:
HOME:用户主目录
PATH:指定命令的检索路径
如何将/usr/local/mysql/bin添加到系统默认读取的PATH的变量中?
PATH=$PATH:/usr/local/mysql/bin
note:linux包含两个重要文件 /etc/profile $HOME/.bash_profile 每次系统登入都要读取这两个文件。
5.变量的引用和替换
假设variable是一个变量
$variable 或者 ${variable } 表示使用变量中储存的值用于替换变量本身
note:位于但用双引号中的变量可以替换,位于单引号中变量则不能进行替换。
二、函数
function 函数名()
{
action;
[returm 数值;]
}
具体说明:
1自定义函数既可以用带function 参数的函数名(),也可以直接用函数名()直接定义,而不带任何参数
2参数返回的时候可以显示的加return返回,如果不加,则将一最后一条命令的运行结果作为返回值。return 后跟数值,取值范围0-255
demo遍历某个目录所有文件
#!/bin/bash function traverse(){ for file in `ls $1`doif [ -d $1"/"$file ]thentraverse $1"/"$fileelseecho $1"/"$filefidone}traverse "/home"
三、shell中的数组
(1)定义数组
arr1=(value1...value2)
如
arr1=(
value1
value2
value3
)
或者单独定义数组的各个分量
arr1[0]=value0
arr1[1]=value1
(3)读取数组
读取数组值的一般格式:
${arr1[index]}
使用@ *可以获取数组中的所有元素:
${arr[*]}
${arr[@]}
获取数组的长度
${#arr[*]}
${#arr[@]}
也可以获取数组中单个元素的长度
${#arr[index]}
[centos@s201 ~]$ arr1=( 1 2 3 4 5 6 7 ) [centos@s201 ~]$ echo ${arr1[1]} 2 [centos@s201 ~]$ echo ${arr1[*]} 1 2 3 4 5 6 7 [centos@s201 ~]$ echo ${arr1[@]} 1 2 3 4 5 6 7 [centos@s201 ~]$ echo ${#arr1[@]} 7 [centos@s201 ~]$ echo ${#arr1[*]} 7 [centos@s201 ~]$ echo ${#arr1[1]} 1
四、shell中字符串的截取
第一种方法:
从左向右截取最后一个string后的字符串
${variable##*string}
从左向右截取第一个string后字符串
${variable##*string}
从右向左截取最后一个string前的字符串
${variable%%string*}
从右向左截取第一个string前的字符串
${variable%string*}
[centos@s201 ~]$ echo ${a##*"i"} n [centos@s201 ~]$ echo ${a##*i} n [centos@s201 ~]$ echo ${a#*i} ngbin [centos@s201 ~]$ echo ${a%%i} wangqingbin [centos@s201 ~]$ echo ${a%%i*} wangq [centos@s201 ~]$ echo ${a%i*} wangqingb
第二种方法:
${变量:n1:n2} 截取变量n1开始的n2 个字符。第一位是0
[centos@s201 ~]$ echo ${a:2:4} ngqn
第三种方法:
ls -al | cut -d "." -f2
ls -al total 1508456 drwx------. 47 centos centos 8192 Apr 5 07:07 . drwxr-xr-x. 3 root root 20 Jul 16 2018 .. -rw-rw-r--. 1 centos centos 0 Jan 9 14:59 1 -rw-rw-r--. 1 centos centos 0 Jan 9 14:35 ]1 -rw-rw-r--. 1 centos centos 0 Jan 9 14:40 1] -rw-rw-r--. 1 centos centos 0 Jan 9 14:38 1]] -rwxrwxr-x. 1 centos centos 81 Jan 9 21:55 1.sh -rw-rw-r--. 1 centos centos 109 Oct 11 11:31 1.txt -rw-rw-r--. 1 centos centos 52839453 Jul 30 2018 2018-07-01.log
[centos@s201 ~]$ ls -al |cut -d "." -f2 total 150845647 centos centos 8192 Apr 5 07:073 root root 20 Jul 16 20181 centos centos 0 Jan 9 14:59 11 centos centos 0 Jan 9 14:35 ]11 centos centos 0 Jan 9 14:40 1]1 centos centos 0 Jan 9 14:38 1]]1 centos centos 81 Jan 9 21:55 11 centos centos 109 Oct 11 11:31 11 centos centos 52839453 Jul 30 2018 2018-07-01
[centos@s201 ~]$ ls -al |cut -d "." -f1 total 1508456 drwx------ drwxr-xr-x -rw-rw-r-- -rw-rw-r-- -rw-rw-r-- -rw-rw-r-- -rwxrwxr-x -rw-rw-r-- -rw-rw-r--
转载于:https://www.cnblogs.com/wqbin/p/10886497.html
shell变量、函数和数组以及字符串的截取相关推荐
- PHP学习总结(函数、数组、字符串)
这次主要学习一下PHP中的函数.数组和字符串. 函数[1]-自定义函数 function 函数名([形式参数1,形式参数2,....形式参数n]){//各种PHP代码....//......retur ...
- 函数和数组,字符串逻辑题
函数和数组逻辑题 函数 预解析 递归求兔子序列 数组 选项卡 全选和反选 点击更换背景颜色 简易日历 30个整型元素的数组,每五个数求出一个平均值,存入新数组 二维数组 找出数组中小于10 的数据 编 ...
- 【前端学习】Day-16 JS基础、循环、函数、数组、字符串、字典
文章目录 1. 了解JavaScript 2. js小案例 3. JavaScript基础 4. js循环 5. js函数 6. js数组 7. js字符串 8. js练习题 1. 了解JavaScr ...
- linux shell脚本传数组参数,shell脚本----函数和数组
目录 一.shell函数 1.简介 2.格式 3.函数调用 4.示例演示 5.递归函数 二.shell数组 1.数组 2.Shell 数组的定义 3.获取数组元素 4.元素切片,替换,删除 5.示例演 ...
- shell脚本函数返回数组
执行脚本(文件my.sh),输出结果
- C语言编程基础-10函数形参数组做形参文件操作
函数形参 被调函数的形参在被调用时临时创建并使用实参对其赋值,故直接修改形参(特殊形式的形参如指针,数组除外)本身只会影响到被调函数内部; 形式参数是在函数调用发生时临时创建出来的,在函数调用结束时又 ...
- php 带建数组转字符串,php数组转换为字符串的两种方法详解【附视频】
本篇文章主要给大家介绍PHP数组转换为字符串的两种方法.(文章末尾附有对应的视频教程) 第一种方法:使用PHP本身的函数implode来直接将数组转换为字符串. 第二种方法:使用循环遍历数组元素拼接成 ...
- php返回第一个字符串的码点_PHP 字符串编码截取函数
一个效率更高的全半角字符串截取函数 [原创,转载请注明:[url]http://wfyang.blog.51cto.com[/url]]现在流传的那几个字符串截取函数,一般都是对字符串进行循环判断,如 ...
- php 把数组转换成字符串_php怎么将数组转换为字符串
php将数组转换为字符串的方法:可以使用implode()函数分割数组,该函数会返回由数组元素组成的字符串.还可以利用循环遍历数组元素并将其拼接成字符串. php将数组转换为字符串的方法 方法1:利用 ...
最新文章
- 英特尔携手中科院计算所建立中国首个 oneAPI 卓越中心
- JAVA日期加减运算
- MySQL表注释和字段注释
- 用shell脚本监控进程是否存在 不存在则启动的实例
- 为什么java可跨平台执行,java为什么可以跨平台执行
- scrum立会报告+燃尽图(第三周第七次)
- 交换机端口安全如何部署
- git查看某个文件的修改历史
- oracle11g session,Oracle11g中Killsession心得
- Android NIO(Noblocking I/O非阻塞I/O)小结
- CRF++ Source code reading experience
- bootdo图片上传
- 使用 TiDB 构建实时应用
- 组件中引入echarts饼状图去除他的划过放大效果。
- Go select chan操作
- 授权公众号第三方平台和开发者模式冲突吗?
- A0/A1/A2/A3/A4图纸大小分别是多少
- 为什么PCB上的单端阻抗控制50欧姆
- stlink-opencd-gdb调试程序
- AutoIt 在线中文文档、开发工具 (GUI 图形开发工具)
热门文章
- java 上界和下界,Java 泛型上下界(上下限)
- github安装_安装ROS时无法初始化(无法连接raw.github)的解决方案
- python 给文本加下划线_untiy3dUGUI实现text文本下划线
- java 485通讯_CAKJ-963U3-KT带485通讯上下限报警智能型仪表
- springboot map数据类型注入_Spring Boot(五):春眠不觉晓,Mybatis知多少
- php保存文件的方法,php实现编辑和保存文件的方法
- IntelliJ IDEA功能和惊喜赠品
- Python反向列表
- sapply lapply_R编程中的apply(),sapply(),lapply()和tapply()函数
- android 崩溃捕获_Android使用FileProvider捕获图像相机图库