shell的一些操作截取字符串,生成随机数,读文件循环

按指定字符截取字符串
方法一

#!/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;

猜你喜欢

转载自blog.csdn.net/weixin_42651205/article/details/84067269
今日推荐