2019-01-18
废话没有直接开始写:
#!/bin/bash
一般脚本用上面这一句开始,像Python一样是类似于选择什么解释器来执行,
一、关于变量
变量定义:
myname="changhengyu"
变量定义有别于其他编程语言,变量名要和等号之间没有空格。
变量使用
echo $myname
或者
echo "hello everyone myname is ${myname}lalala"#
使用时只需要美元符号取值即可
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界
只读变量
就是在变量定以后,使用readonly
进行一次修饰,就变成只读变量,只读变量不允许被修改,不允许本unset
删除。
变量删除
unset
这个命令用来删除已经定义的变量,删除再调用会报错,除非再次赋值。
shell字符串
- 字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。
字符串的单引号
str='this is string'
单引号字符串的限制:
- 单引号中的任何字符串都会原样输出,单引号中的变量是无效的。
- 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
字符串的双引号
双引号就高级一些,中间可以加变量也可以,用转义字符。
字符串拼接
突然插入一个参考网址,就是那个菜鸟教程的网址
下面的笔记有很多拼接和截取的方式,比源站还能详细一些。
就想到哪里写哪里吧
1.判断的各种标志
- -eq 两值 相等是真
- -ne 两值 不等是真
- -gt greater than
- -ge greater&equal的缩写
- -lt lower than的缩写 表示小于为真
- -le lower&equal的缩写 表示小于等于为真
2.用于字符串
- =
- !=
- -z 字符串长度为0 为真
- -n 字符串长度不为0 为真
- -e 文件存在 为真
- -r 文件存在 且有读权限
- -w
- -x
- -s
- -d 文件存在 且是一个目录
使用时配合python 的套路
通过python的print输出一些我们想要得到的信息,然后使用cut 的方式截取变量进行赋值。
以下是自动更新二进制的做成成果物的脚本
value=`python $(pwd)/parseconfig.py -y $(pwd)/config/config.yaml`
otherpathlist=`echo $value|cut -d "," -f1`
target_count=`echo $value|cut -d "," -f2`
srcpathlist=`echo $value|cut -d "," -f3`
url_list=`echo $value|cut -d "," -f4`
branch_list=`echo $value|cut -d "," -f5`
xml_list=`echo $value|cut -d "," -f6`
scriptpath=$(pwd)
test_result_targetpath=`echo $otherpathlist|cut -d " " -f2`
python 方面的脚本输出代码
print pathstr + ','
print len(self.attributelist['TARGET'].keys())
print ','
for target in self.attributelist['TARGET'].keys():
print self.attributelist['TARGET'][target]['srcpath'] + " "
print ','
for target in self.attributelist['TARGET'].keys():
print self.attributelist['TARGET'][target]['url'] + " "
print ','
for target in self.attributelist['TARGET'].keys():
print self.attributelist['TARGET'][target]['branch'] + " "
print ','
for target in self.attributelist['TARGET'].keys():
print self.attributelist['TARGET'][target]['xml'] + " "
配合食用效果更佳
然后将带空格的字符串转化成shell食用的list列表,
进行遍历食用。或者可以直接遍历食用但是我一直没有找到办法,就这样吧。
再写个啥呢,把cut 和 set 写一下?
还有那个传入参数取出的时候食用 * 和使用@ 的区别写一下,
先发布了,回头再写 2019年4月9日11:55:11 快到午饭的时间了
网友评论