我通过运行 10 亿次循环来测试 Bash 和 Python 的速度。
$ cat python.py
#!/bin/python
# python v3.5
i=0;
while i<=1000000000:
i=i+1;
Run Code Online (Sandbox Code Playgroud)
重击代码:
$ cat bash2.sh
#!/bin/bash
# bash v4.3
i=0
while [[ $i -le 1000000000 ]]
do
let i++
done
Run Code Online (Sandbox Code Playgroud)
使用该time
命令,我发现 Python 代码只需要 48 秒即可完成,而 Bash 代码在我杀死脚本之前需要 1 个多小时。
为什么会这样?我预计 Bash 会更快。我的脚本有问题还是 Bash 使用这个脚本真的慢得多?
我们要构建 6 个挂载点文件夹作为示例
/data/sdb
/data/sdc
/data/sdd
/data/sde
/data/sdf
/data/sdg
Run Code Online (Sandbox Code Playgroud)
所以我们使用数组编写了这个简单的 bash 脚本
folder_mount_point_list="sdb sdc sdd sde sdf sdg"
folderArray=( $folder_mount_point_list )
counter=0
for i in disk1 disk2 disk3 disk4 disk4 disk5 disk6
do
folder_name=${folderArray[counter]}
mkdir /data/$folder_name
let counter=$counter+1
done
Run Code Online (Sandbox Code Playgroud)
现在我们想改变没有counter的代码并且let=$counter=counter+1
是否可以移动每个循环数组以获得下一个数组值?
就像
${folderArray[++]}
Run Code Online (Sandbox Code Playgroud)