bash简单常见用法

bash新建自定义数组

myArray=()

for ((i = 0 ; i < 5 ; i++ ))

do

myArray[$i]="AAAA{$i}DD"

done

echo ${myArray[@]} #输出结果是AAAA{0}DD AAAA{1}DD AAAA{2}DD AAAA{3}DD AAAA{4}DD

提取文件名成功

projects="D:/Project/Program/IDEAWorkspace/myauto/automation-test/src/main/java/com/welab/automation/projects/channel/feature/abc.feature"

filename=${projects##*/} #变量赋值 等号两边不要空格

echo "${filename}" #输出结果abc.feature

bash if的用法,根据featureLocations的值是否包含API55,来确定给platform赋值

platform=""

featureLocations="API"

if [[ ${featureLocations[$i]^^} = *"API55"* ]]; then

platform="API"

else

platform="APP"

fi

echo ${platform}

bash脚本中变量大小写切换

name="Abc Def"

echo upper ${name}

echo ${name} | tr "[a-z]" "[A-Z]" 小写字母变成大写 ,mac和windows都适用

echo ${name,,} 大写字母变成小写

echo ${name^^} 小写字母变成大写

$ test="abcDEF"

# 把变量中的第一个字符换成大写

$ echo ${test^}

AbcDEF

# 把变量中的所有小写字母,全部替换为大写

$ echo ${test^^}

ABCDEF

# 把变量中的第一个字符换成小写

$ echo ${test,}

abcDEF

# 把变量中的所有大写字母,全部替换为小写

$ echo ${test,,}

abcdef

bash shell 详细介绍文档:

https://www.coolcou.com/bash-shell-example/bash-shell-variable/bash-shell-case.html

获取bash脚本所在的绝对路径

SHELL_FOLDER=$(cd "$(dirname "$0")";pwd)

echo "${SHELL_FOLDER}"

与相对路径拼接,然后删除文件

rm -f ${SHELL_FOLDER}/delete/a/test.txt

for 语句依次打印数组元素

names=("Alen" "Walker" "Miller")

len=${#names[*]} #获取数组长度

echo "${len}"

echo The length of the array is - $len

for (( i=0; i<$len; i++ ))

do

echo The value of element $i is: ${names[$i]}

done

#数组A转成字符串S

A=(AA BB CC)

S=$(echo "${A[*]}")#A是数组,S是字符串。S的内容就是"AA BB CC"啦

S=$(IFS=,; echo "${A[*]}") #S="AA,CC,CC"

#字符串S转成数组A

S="AA BB CC"

A=(${S}) #A就是数组了,A=(AA BB CC)

names=("Alen" "Walker" "Miller")

echo The length of the array is ${#names[*]} #获取数组的长度

# 字符串转换成数字

index_num=$((index))

index_num=$((index-1)) #注意减1这些运算操作要在括号内进行

#定义数组,然后一次echo数字,让用户可以输入num来选中需要执行的case

folderarr=("Login" "Add Money EDDI" "Card") #定义数组用空格分开,而不是逗号

echo "1.Login"

echo "2.Add Money EDDI"

echo "3.Card"

echo "${folderarr}"

folderarr_len=${#folderarr[*]}

echo "folderarr_len ${folderarr_len}"

read ids #等待用户输入,读取用户输入的case id

myids=(${ids}) #字符串转数组

echo The length of the array is ${#myids[*]}

ll=${#myids[*]}

echo "${ll}"

echo "${#myids[*]}" #输出数组长度

#for (( i=0; i<$ll; i++ ))

#do

#echo The value of element $i is: ${folderarr[${i}]}

#done

#for index in "${myids[@]}"

#do

#echo "${index}"

#index_num=$((index)) # 字符串转换成数字

#echo "${index_num}"

#echo The value of element is: ${folderarr[index_num-1]}

#echo The value of element is: ${folderarr[0]}

#done

new_arr=()

#根据第一个数组的元素座位坐标,去第二个数组中获取对应的元素

echo "-----------------------"

for (( i=0; i<$ll; i++ ))

do

index=${myids[${i}]} #获取第i个元素

index_num=$((index-1)) # 把元素转换成数字,获取folderarr下坐标,由于坐标是从0开始,所以减1,注意减1要在括号内进行

echo "index_num ${index_num}"

item=${folderarr[${index_num}]} #根据数字从folderarr数组中

echo "item: ${item}"

echo "i: ${i}"

new_arr[${i}]="${item}"

echo "-----------------------"

done

#数组长度

echo "${new_arr[*]}" #输出整个new_arr数组

echo "${new_arr[1]}" #输出new_arr数组第二个元素

echo "${#new_arr[*]}" #输出整个new_arr数组长度,注意比输出整个数组多了一个 # 号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/18649.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python程序员辞职后,如何踏出自由职业的第一步,聊聊我自己的看法

大家好&#xff0c;我是兴哥。有个广州的朋友说他辞职了&#xff0c;想要自由职业该怎么开始第一步呢&#xff1f;我问他你之前的收入月薪是多少&#xff0c;他说2万出头。我不得不说&#xff0c;对于写项目的自由职业程序员&#xff0c;2万是一个极高的门槛。但既然他已经辞职…

淘宝拍立淘多码识别方案总结

本文通过拆解原始问题、发散思路优化等方式&#xff0c;记录了扫一扫从单码到多码识别的技术框架改造及多码识别率优化方案。其中涉及解码SDK的能力、码处理技术链路、码转换算法、降低漏检率策略等设计与实现。 背景与挑战 多码即在同一个界面中同时存在多个条码或二维码&…

Node.js 与 WebAssembly

目录 1、简介 2、关键概念 3、生成WebAssembly模块 4、如何使用它 5、与操作系统交互 1、简介 首先&#xff0c;让我们了解为什么WebAssembly是一个很棒的工具&#xff0c;并学会自己使用它。 WebAssembly是一种类似汇编的高性能语言&#xff0c;可以从各种语言编译&…

从零开始的强化学习入门学习路线

强化学习是机器学习领域中的一个分支&#xff0c;它是指智能体通过与环境的交互来学习如何采取最佳行动以最大化奖励信号的过程。强化学习在许多领域都有广泛的应用&#xff0c;如游戏、自动驾驶和机器人控制等。如果你对强化学习感兴趣&#xff0c;下面是一个入门强化学习的学…

【分布式锁】Redisson分布式锁的使用(推荐使用)

文章目录 前言一、常见分布式锁方案对比二、分布式锁需满足四个条件三、什么是Redisson?官网和官方文档Redisson使用 四、Redisson 分布式重入锁用法Redisson 支持单点模式、主从模式、哨兵模式、集群模式自己先思考下,如果要手写一个分布式锁组件&#xff0c;怎么做&#xff…

数据备份系列:Rsync 备份实战记录(二)

一、Rsync Cron 场景使用 在对数据备份要求实时性不高的情况下&#xff0c;可优先考虑该场景&#xff0c;选择一个合适的时间&#xff0c;对数据进行定时远程增量同步。 在《数据备份系列&#xff1a;Rsync 备份详解&#xff08;一&#xff09;》中我们已经对服务搭建以及远程…

鸿蒙学习总结

控件 button 源码所在路径&#xff0c;小编也只是猜测&#xff0c;还没搞懂鸿蒙上层app到底层的玩法&#xff0c;网上也没相关资料&#xff0c;找源码真是费劲(不是简单的下载个源码的压缩包&#xff0c;而是找到里面的控件比如Button&#xff0c;或者UIAbility实现的源码&…

基于python语言dlib库和opencv库的视频眨眼检测

功能说明&#xff1a; 基于python编程语言&#xff0c;使用dlib 和opencv开发的视频眨眼检测。 环境&#xff1a; * python 3.6.8 * opencv 3.4.2.16 * dlib 19.7.0 原理&#xff1a; 1.使用opencv-python读取处理视频图像 2.使用线程机制处理人脸检测关键点 3.根…

elk生命周期删除日志

elk版本&#xff1a;7.14 一、简介 ELK日志我们一般都是按天存储&#xff0c;例如索引名为"prodlog-2023-05-08"&#xff0c;因为日志量所占的存储是非常大的&#xff0c;我们不能一直保存&#xff0c;而是要定期清理旧的&#xff0c;这里就以保留7天日志为例。 自…

UDP通信机制详解

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

opencv_c++学习(五)

Mat类数值存储方式 上图为opencv中三通道数据的存储方式&#xff0c;反映到图像上则为空间维度为3*3&#xff0c;通道为3的图像。 Mat类的属性 Mat类的属性如上&#xff0c;在这里我们解释一下step。step是行列数与数据类型的字节数相乘的数据。 Mat类元素读取 在Mat中&…

[GFCTF 2021] day2

Baby_Web 查看源码发现 <!--源码藏在上层目录xxx.php.txt里面&#xff0c;但你怎么才能看到它呢?--> 然后抓包看中间件&#xff0c;Apache/2.4.49 (Unix) 存在目录穿越漏洞 curl http://node4.anna.nssctf.cn:28805/cgi-bin/.%2e/.%2e/.%2e/.%2e/var/www/index …

Linux LED 驱动开发实验

1、LED 灯驱动原理 Linux 下的任何外设驱动&#xff0c;最终都是要配置相应的硬件寄存器。LED 灯驱动最 终也是对 I.MX6ULL 的 IO 口进行配置&#xff0c;在 Linux 下编写驱动要符合 Linux 的驱动框架。I.MX6U-ALPHA 开发板上的 LED 连接到 I.MX6ULL 的 GPIO1_IO03 这个引脚上&…

一起Talk Android吧(第五百四十二回:无进度值ProgressBar)

文章目录 概念介绍使用资源文件实现使用默认设置修改风格使用动画资源 使用代码实现经验总结 各位看官们大家好&#xff0c;上一回中咱们说的例子是"ProgressBar总结",本章回中介绍的例子是" 无进度值ProgressBar"。闲话休提&#xff0c;言归正转&#xf…

基于磁盘的Kafka为什么这么快

基于磁盘的Kafka为什么这么快 原创 Wyman 大数据技术架构 2019-05-23 18:04 Kafka是大数据领域无处不在的消息中间件&#xff0c;目前广泛使用在企业内部的实时数据管道&#xff0c;并帮助企业构建自己的流计算应用程序。Kafka虽然是基于磁盘做的数据存储&#xff0c;但却具有…

从FPGA说起的深度学习(九)- 优化最终章

这是新的系列教程&#xff0c;在本教程中&#xff0c;我们将介绍使用 FPGA 实现深度学习的技术&#xff0c;深度学习是近年来人工智能领域的热门话题。 在本教程中&#xff0c;旨在加深对深度学习和 FPGA 的理解。 用 C/C 编写深度学习推理代码高级综合 (HLS) 将 C/C 代码转换为…

CTFHub-Git泄露-Log

前言 git是一个版本控制工具&#xff0c;通过泄露的.git文件可还原代码 题目如下 wp 1. dirsearch目录扫描 发现存在git泄露&#xff0c;根据提示下载对应git利用工具GitHack&#xff0c;这个工具的特点是能还原历史版本 2. 使用工具下载源码 tips: 最好在linux中操作&…

RabbitMQ、RabbitMQ发布/订阅模式

1.RabbiMQ RabbitMQ是一个消息中间件 MQ的基本结构 1.1RabitMQ安装 参考&#xff1a;Docker安装 Docker中部署RabbitMQ 2.入门案例 2.1.publisher实现 package cn.itcast.mq.helloworld;import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; im…

算法记录 | Day53 动态规划

1143.最长公共子序列 思路&#xff1a; 本题和动态规划&#xff1a;718. 最长重复子数组 (opens new window)区别在于这里不要求是连续的了&#xff0c;但要有相对顺序&#xff0c;即&#xff1a;“ace” 是 “abcde” 的子序列&#xff0c;但 “aec” 不是 “abcde” 的子序…

力扣sql中等篇练习(十六)

力扣sql中等篇练习(十六) 1 不同性别每日分数统计 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 a 示例输入 b 示例输出 1.2 示例sql语句 # 分数是往后累加的 SELECT s2.gender,s2.day,sum(s1.score_points) total FROM Scores s1 CROSS JOIN Scores s2 ON s2.gen…