#!/bin/bash keywords=("不需要" "不用謝謝" "xxx" "xxx") for var in ${keywords[@]} do echo $var cat ../corpus.txt | grep $var | wc -l cat ../corpus.txt | grep $var > search_res/$var.txt done
1.Shell 數組
數組中可以存放多個值。Bash Shell 只支持一維數組(不支持多維數組),初始化時不需要定義數組大小(與 PHP 類似)。
與大部分編程語言類似,數組元素的下標由0開始。
Shell 數組用括號來表示,元素用"空格"符號分割開,語法格式如下:
array_name=(value1 ... valuen)
我們也可以使用下標來定義數組:
array_name[0]=value0 array_name[1]=value1 array_name[2]=value2
讀取數組元素值的一般格式是: ${array_name[index]}
獲取數組中的所有元素
使用@ 或 * 可以獲取數組中的所有元素,例如:
echo "數組的元素為: ${my_array[*]}" echo "數組的元素為: ${my_array[@]}"
獲取數組長度的方法與獲取字符串長度的方法相同,例如:
echo "數組元素個數為: ${#my_array[*]}" echo "數組元素個數為: ${#my_array[@]}"
2.Shell 流程控制中的for 循環
與其他編程語言類似,Shell支持for循環。
for循環一般格式為:
for var in item1 item2 ... itemN do command1 command2 ... commandN done
寫成一行:
for var in item1 item2 ... itemN; do command1; command2… done;
當變量值在列表里,for循環即執行一次所有命令,使用變量名獲取列表中的當前取值。命令可為任何有效的shell命令和語句。in列表可以包含替換、字符串和文件名。
in列表是可選的,如果不用它,for循環使用命令行的位置參數。
例如,順序輸出當前列表中的數字:
for loop in 1 2 3 4 5 do echo "The value is: $loop" done
輸出結果:
The value is: 1 The value is: 2 The value is: 3 The value is: 4 The value is: 5
順序輸出字符串中的字符:
for str in 'This is a string' do echo $str done
輸出結果:
This is a string
參考: