[oracle@scaqad02adm01 lstorm]$ ./t.sh12
345[oracle@scaqad02adm01 lstorm]$ cat t.sh
#!/usr/bin/sh
set -o nounset
amount_workload=5
for i in
$(seq $amount_workload )
doecho
$idone
方法一:通過seq命令
seq命令可以生成從某個數字到遞增到另一數字的序列。用法如下:
usage: seq [選項] 尾數
or: seq [選項] 首數 尾數
or: seq [選項] 首數 增量值 尾數
print numbers from first to last, in steps of increment.
選項引數如下:
-f, --format=格式 use printf style floating-point format
-s, --separator=字串 用指定的字串分割各序列值,預設分隔符為\n
-w, --equal-width 使各序列值位數寬度相等,位數不夠的在前面用0補齊
示例1:指定序列格式
複製**
[root@bogon ~]# seq -f 『%g』 2 6 ##沒有使用-f指定格式時,預設格式時%g,可以認為%g沒有指定任何格式23
456[root@bogon ~]# seq -f 『%3g』 7 2 12 ##-f 『%3g』 可以直接指定序列的寬度(3位數),這裡不足的部分用空格補齊79
11[root@bogon ~]# seq -f 『%03g』 7 2 12 ##-f 『%03g』 可以指定序列寬度(3位數),不足的部分用0補齊
007009
011[root@bogon ~]# seq -f 『tmp_%g』 7 2 12 ##%前面也可以根據需要新增字串,生成具有自己想要的字首的序列
tmp_7
tmp_9
tmp_11
複製**
示例2:指定序列分隔符
[root@bogon ~]# seq -s , 2 6
2,3,4,5,6
[root@bogon ~]# seq -s 「echo -e "\t"
」 2 6
2 3 4 5 6
示例3:指定序列寬度,不足的位數用0補齊
複製**
[root@bogon ~]# seq -w 8 10 ##不設定步長
0809
10[root@bogon ~]# seq -w 1 3 10 ##設定步長
0104
0710
複製**
注:-f 可以直接指定序列的寬度,-w是將序列中的最大值的寬度作為序列的寬度;
-f 和 -w 引數不能一起使用;
通過上面的例子可以發現,seq生成序列:簡單,能方便的生成序列,且序列的增量步長、序列之間的分隔符都可控,對於同一指令碼中生成多個序列號的需求十分有效。
但是在實際中也有不足:若某個指令碼要執行多次,若不做處理,批次號的初始值還是原來的初始值。這種情況下,個人的思路是通過已有檔案的批次號的第乙個非0字元後面的數字取出來,作為新的seq的起始值。
示例示例如下:
複製**
##獲取本次指令碼第幾次執行,以生成批次號
if [ ! -f spo
oldi
r"tm
p"
"tmp_"
spoold
ir"
tmp"
"_000001.log" ];then
v_start_no=1
else
v_start_no=ls -l $ | grep "tmp_"$ | awk '' | sort -n | tail -1 | sed 's/^0*//'
v_start_no=$((v_start_no+1))
fi##每次操作乙個檔案
for v_batch_no inseq -w $ 100000 | head -1
; do
touch 「tmp_」$".log"
done
複製**
根據自己實際情況為準,這裡的部分內容是自己改過的。
方法二:直接根據已有檔名字尾獲取
示例如下:
複製**
######生成批次號:6位數字,從000001開始,每次加1########
num=ls -l $ | grep test_$ | awk '' | sort -n | tail -1 | sed 's/^0*//'
if [ ! -f tmp
"tes
t"
"test_"
tmp"te
st"
"_000001".txt ];then
v_batch_no=「000001」
else
tmp_num=$((num+1))
v_batch_no=printf "%06d\n" $
fi複製**
方法三:for遍歷指定的字串行
示例如下:
[root@bogon tmp]# for i in ;do echo $i;done
001002
003(略)
這種方法也可以生成類似001這種序列號,但是比使用seq還是要差很多的。
分類: 1-linux伺服器, 1-3、shell, 平時總結
seq與Shell序列生成
有時候可能有這樣的需要 用shell生成類似0001這樣的序列作為批次號,這裡整理了一下個人的方法 seq命令可以生成從某個數字到遞增到另一數字的序列。用法如下 seq help usage seq 選項 尾數 or seq 選項 首數 尾數 or seq 選項 首數 增量值 尾數 print nu...
Shell中seq的用法
seq squeue 是乙個序列的縮寫,主要用來輸出序列化的東西 用法 seq 選項 尾數 seq 選項 首數 尾數 seq 選項 首數 增量 尾數 以指定增量從首數開始列印數字到尾數 f,format 格式 使用printf 樣式的浮點格式 後面跟的 0.3g s,separator 字串 使用指...
seq 生成隨機數
seq命令用於產生從某個數到另外乙個數之間的所有整數。seq 選項 尾數 seq 選項 首數 尾數 seq 選項 首數 增量 尾數 f,format 格式 使用printf 樣式的浮點格式 s,separator 字串 使用指定字串分隔數字 預設使用 n w,equal width 在列前新增0 使...