按指定字符截取字符串
方法一
#!/bin/bash
string="fuck,you,frank"
array=(${string//,/ })
for var in ${array[@]}
do
echo $var
done
方法二
#!/bin/bash
string="fuck,you,frank"
OLD_IFS="$IFS"
IFS=","
array=($string)
IFS="$OLD_IFS"
for var in ${array[@]}
do
echo $var
done
比用管道好使些,且这个方法可以保留分割字符串中的空格和换行
字符串拼接
$value1=home
$value2=${value1}"="
echo $value2
或者
var1="fuck"
var2="frank"
var3=${var1}${var2}
var4=${var1}"you"${var2}
echo $var3
echo $var4
计算数组或者字符串长度
#取得数组元素的个数
length=${#NAME[@]}
echo -e $length "\n"
#或者
length=${#NAME[*]}
echo -e $length "\n"
#取得数组单个元素的长度
lengthn=${#NAME[0]}
echo -e $lengthn "\n"
分割带有空格和换行符的字符串到数组
arr=($string)
循环读文件,且可以改变循环内的变量值
index=0
while read line
do
echo $line
index=$[$index+1]
done < filename.txt
echo $index
如果用
cat file|while read line
do
index=$[index+1]
done
由于用管道去读文件,index值不改变
生成随机数
#加入时间戳,再获得当前时间的纳秒数据,精确到亿分之一秒。
#这个相当精确了,就算在多cpu,大量循环里面,同一秒里面,也很难出现相同结果
#用它来做随机数的基数获得随机数。
date +%s%N
#获得随机数返回值,shell函数里算出随机数后,更新该值
function random()
{
min=$1;
max=$2-$1;
num=$(date +%s+%N);
((retnum=num%max+min));
#进行求余数运算即可
echo $retnum;
#这里通过echo 打印出来值,然后获得函数的,stdout就可以获得值
#还有一种返回,定义全价变量,然后函数改下内容,外面读取
}
#得到1-10的seq数据项
for i in {1..10};
do
out=$(random 2 10000);
echo $i,"2-10000",$out;
done;