shell 使用杂记@H_404_2@
1前言
shell 脚本在工作中或多或少都会用到。有时候我们只是使用shell实现工作中的一个功能,并不需要全部学会shell的知识。这篇博客记录了我常用的shell功能,记录的目的是需要用的时候信手拈来。@H_404_2@2 功能
2.1 shell 数组
@H_404_2@
数值型数组定义@H_404_2@
使用一对括号表示定义数组,元素之间使用“空格”来隔开@H_404_2@
numberArray=(1 2 3 4 5);@H_404_2@
字符串类型数组@H_404_2@
数组中的元素使用双引号或者单引号包含,元素之间使用“空格”来隔开。@H_404_2@
stringArray=("aaa" "bb" "cc"); 或者 stringArray=('aa' 'bb' 'cc');@H_404_2@
获取数组长度@H_404_2@
arrLength=${#numberArray[*]}或${#numberArray[@]}均可,即形式:${#数组名[@/*]} 可得到数组的长度。@H_404_2@
读取某个下标的值@H_404_2@
arr_index2=${numberArray[2]},即形式:${数组名[下标]}@H_404_2@
2.2 shell 循环
2.2.1 for
类似C/C++ 语音的for循环@H_404_2@
for (( i=0; i<5 ; i++ )); do@H_404_2@
echo $i@H_404_2@
done@H_404_2@
2.3 shell 循环读取目录文件
for file in ./tmpcert/*@H_404_2@
do@H_404_2@
if test -f $file@H_404_2@
then@H_404_2@
echo $file 是文件@H_404_2@
fi@H_404_2@
@H_404_2@
if test -d $file@H_404_2@
then@H_404_2@
echo $file 是目录@H_404_2@
fi@H_404_2@
done@H_404_2@
2.4 shell 查看当前目录下文件的个数
2.4.1 查看当前目录下文件的个数
ls -l | grep "^-" | wc –l@H_404_2@
2.4.2 查看当前目录下文件的个数(包括子目录)
ls -lR| grep "^-" | wc –l@H_404_2@
2.4.3 查看某目录下文件夹(目录)的个数(包括子目录)
ls -lR| grep "^d" | wc -l@H_404_2@
2.5 shell 整型变量自增(加1)的6种方法
以变量var为例
var=1@H_404_2@
2.5.1方法1
var =$(($ var +1))@H_404_2@
2.5.2方法2
var =$[$ var +1]@H_404_2@
2.5.3 方法3
var =`expr $ var + 1`@H_404_2@
2.6.4 方法4
let var ++@H_404_2@
2.5.5 方法5
let var +=1@H_404_2@
2.5.6 方法6
((var ++))@H_404_2@
2.6 使用用例:
2.6.1 awk获取包含” BEGIN CERTIFICATE”的行号,并保存到数组lineArray中
line=`grep "BEGIN CERTIFICATE" -w chain.cer -n | awk -F':' '{print $1}'`
lineArray=($line)@H_404_2@
2.6.2 sed截取文件的行并重定向到文件
begin=1 #起始
end=5 #结束
cmd="$begin,${end}p" #命令
sed -n $cmd chain.cer > tmpcert/1.txt #截取行并重定向@H_404_2@
2.6.3 sed 使用在文本中替换字符或字符串
tmp测试文件中的内容如下 subject=/C=CN/ST=state/L=location/O=organization/OU=organizationUnit/CN=commonName/emailAddress=email 把':'替换成= sed -i "s/:/=/g" tmp 在文本中替换字符或字符串(使用正则表达式) 把'subject=/' 替换成空,其中'/'需要使用转义字符'\'来转义表示 sed -i "s/subject=\///g" tmp@H_404_2@