ltp-ddt smp_basic
local __arrayvalues=$3
eval $__arrayvalues="($($1 2>&1 | sed -rn $2))"
}
$single_core="($(taskset -c 0 stress-ng --matrix 4 -t 10s --perf
--matrix-size 16 --metrics-brief 2>&1 | sed -rn
's/.+matrix[[:space:]]+([[:digit:]]+)[[:space:]]+.*/\1/p'))"
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
sed命令
命令 | 说明 |
---|---|
d | 删除,删除选择的行 |
D | 删除模板块的第一行 |
s | 替换指定字符 |
h | 拷贝模板块的内容到内存中的缓冲区 |
H | 追加模板块的内容到内存中的缓冲区 |
g | 获得内存缓冲区的内容,并替代当前模板块中文本 |
G | 获得内存缓冲区的内容,并追加到当前模板块文本的后面 |
l | 列表不能打印字符的清单 |
n | 读取下一个输入行,用下一个命令处理新的行而不是第一个命令 |
N | 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码 |
p | 打印模板块的行 |
P | 打印模板块的第一行 |
q | 退出sed |
b label | 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾 |
r file | 从file中读行 |
t label | if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾 |
T label | 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾 |
w file | 写并追加模板块到file末尾 |
W file | 写并追加模板块的第一行到file末尾 |
! | 表示后面的命令对所有没有被选定的行发生作用 |
= | 打印当前行号 |
# |
把注释扩展到第一个换行符以前
|
sed替换标记
命令 | 说明 |
---|---|
g | 表示行内全面替换 |
p | 表示打印行 |
w | 表示把行写入一个文件 |
x | 表示互换模板块中的文本和缓冲区中的文本 |
y | 表示把一个字符翻译为另外的字符(但是不用于正则表达式) |
\1 | 子串匹配标记 |
& | 已匹配字符串标记 |
sed元字符集
命令 | 说明 |
---|---|
^ | 匹配行开始,如:/^sed/匹配所有以sed开头的行。 |
$ | 匹配行结束,如:/sed$/匹配所有以sed结尾的行。 |
. | 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。 |
* | 匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。 |
[] | 匹配一个指定范围内的字符,如/[sS]ed/匹配sed和Sed。 |
[^] | 匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。 |
(..) | 匹配子串,保存匹配的字符,如s/(love)able/\1rs,loveable被替换成lovers。 |
& | 保存搜索字符用来替换其他字符,如s/love/&/,love这成love。 |
< | 匹配单词的开始,如:/<love/匹配包含以love开头的单词的行。 |
> | 匹配单词的结束,如/love>/匹配包含以love结尾的单词的行。 |
x{m} | 重复字符x,m次,如:/0{5}/匹配包含5个0的行。 |
x{m,} | 重复字符x,至少m次,如:/0{5,}/匹配至少有5个0的行。 |
x{m,n} |
重复字符x,至少m次,不多于n次,如:/0{5,10}/匹配5~10个0的行。
|
local multiplier=1
if [ -n "$4" ]; then
multiplier=$4
fi
local old=("${!1}")
local new=("${!2}")
for i in "${!old[@]}"; do
echo "Checking assertion for index $i"
echo "->calc: \"${old[$i]}*$multiplier $3 ${new[$i]}\""
adjusted_value=$(echo "(${old[$i]} * $multiplier)/1" | bc)
assert [ $adjusted_value $3 ${new[$i]} ]
done
}
echo "${old[$i]}"
done
输出:dual_core[@]
间接变量引用
如果第一个变量的值是第二个变量的名字,从第一个变量引用第二个变量的值就称为间接变量应用。
variable1的值是variable2,而variable2又是变量名, variable2的值为value,间接变量引用是指通过variable1获 得变量值value的行为
variable1=variable2
variable2=value
bash shell提供了两种格式实现间接变量引用
eval tempvar=$$variable1
tempvar=${!variable1}
- aaa=123
- bbb=aaa
- echo $bbb
- echo ${!bbb}
- 输出结果:
aaa
123
##############################################################################
echo "${old[$i]}"
done
输出:190 100
echo "${old[$i]}"
done
#!/bin/bash
#数组遍历 days=(one two three four)
#for循环遍历
for day in ${days[*]} #或${days[@]}
do
echo $day
done
echo "***************"
#for循环带下标遍历 ${!days[@]}==》(0 1 2 3)
for i in ${!days[@]}
do
echo ${days[$i]}
done
eval "${@}"
if [ $? -ne 0 ]
then
echo "Assertion ${@} failed"
i=0
while caller $i
do
i=$((i+1))
done
exit 2
fi
}
dual_core=(190 100)
check_array_values() {
#local old=${1}
#local old=${!1}
local old=("${!1}")
echo ${old[@]}
for i in "${!old[@]}"; do
echo "${old[$i]}"
done
}
check_array_values dual_core[@]
echo "*************"
new1=${!dual_core[@]}
echo ${new1[@]}
for i in ${!new1[@]}; do
echo "${new1[$i]}"
done
new=("${!dual_core[@]}")
echo ${new[@]}
for i in ${!new[@]}; do
echo "${new[$i]}"
done
最新文章
- content相关属性
- 修改Oracle字符集为 ZHS16GBK
- Zabbix安装图解教程
- (转载)U-boot启动完全分析
- Java内存分配
- Selenium WebDriver屏幕截图(C#版)
- SiteMesh学习入门
- Configure the AD FS server for claims-based authentication -zhai zi wangluo
- javascript类继承系列四(组合继承)
- 将Excel文件数据导入到SqlServer数据库的三种方案
- Linux系统编程-----进程fork()
- s21day08 python笔记
- SpringBoot启动方式讲解和部署war项目到tomcat9
- Loadrunner回放脚本时报错Action.c(41): Error -27979: Requested form not found [MsgId: MERR-27979]
- 解决mac安装homebrew后报错-bash: brew: command not found
- Docker学习笔记三 Dockerfile 指令 定制镜像
- bzoj4519: [Cqoi2016]不同的最小割(最小割树)
- 在Ubuntu18.04中QT编程的环境构建(转)
- SQL HAVING用法详解
- css3阴影