由于iOS端老項(xiàng)目使用了國際化,需要配置多國語言会烙,又因?yàn)槌霈F(xiàn)使用的多而配置的少的情況残炮,所以最近有個需求韭赘,如何去檢測所使用的字符串是否都有對應(yīng)的國際化配置,因此就寫了以下腳本势就,可能有更好的方法或者寫法泉瞻,歡迎交流!
# !/bin/bash
arr1=()
arr2=()
# 遞歸遍歷文件夾獲取文件夾下的文件苞冯,并讀取文件內(nèi)容保存到數(shù)組arr1
function read_dir(){
for file in `ls $1` #注意此處這是兩個反引號袖牙,表示運(yùn)行系統(tǒng)命令
do
if [ -d $1"/"$file ] #注意此處之間一定要加上空格,否則會報錯
then
read_dir $1"/"$file
else
if [[ ${file:0-2} == '.m' ]]; # 查找擴(kuò)展名為 .m的文件
then
echo $1"/"$file
for line in `cat $1"/"$file`
do
if [[ "${line}" =~ "LocalizedStr(" ]]; #判斷是否包含所指定的字符串
then
if [[ "${line}" =~ "@" ]] #判斷是否包含所指定的字符串
then
# echo $line
tmpline=${line#*'LocalizedStr(@"'} #去掉字符串LocalizedStr(@"之前的
linestr=${tmpline%%'")'*} #去掉字符串")之后的
arr1[${#arr1[*]}]=$linestr #存儲到數(shù)組arr1
else
tmpline=${line#*'LocalizedStr('} #去掉字符串LocalizedStr(之前的
linestr=${tmpline%%')'*} #去掉字符串")之后的
arr1[${#arr1[*]}]=$linestr #存儲到數(shù)組arr1
fi
fi
done
fi
fi
done
}
# 讀取文件內(nèi)容并保存到數(shù)組arr2
function read_file(){
# 獲取當(dāng)前腳本(或者項(xiàng)目)所在目錄路徑
CURRENT_DIR=$(cd $(dirname $0); pwd)
# echo $CURRENT_DIR
# 文件路徑---此處需修改為自己的文件路徑
file_path="文件所在項(xiàng)目中的絕對路徑"
# 要比較的文件完整路徑
file_p=$CURRENT_DIR$file_path
# 先列出路徑下的文件
# (ls -l $file_p)
# read -p "請輸入要讀取的文件名稱:" file_n
# count=0
while read line
do
# echo "$line"
# let "count += 1"
# echo "$count" # 這個地方用于驗(yàn)證是按照行讀取內(nèi)容的舅锄,讀者測試的時候可以將注釋掉的三行代碼打開 鞭达,這樣就可以看到效果
if [[ "${line}" =~ "=" ]];
then
tmpline=${line#*'"'}
linestr=${tmpline%%'" = "'*}
arr2[${#arr2[*]}]=$linestr
# echo $linestr
fi
done < "$file_p"
}
declare -a diff_list
function check(){
t=0
flag=0
for list1_num in "${arr1[@]}"
do
# echo list1_num is ${list1_num}
for list2_num in "${arr2[@]}"
do
# echo list2_num is ${list2_num}
if [[ "${list1_num}" == "${list2_num}" ]]; then
# echo "打印數(shù)組相同元素:"$list1_num
flag=1
break
fi
done
if [[ $flag -eq 0 ]]; then
diff_list[t]=$list1_num
t=$((t+1))
else
flag=0
fi
done
echo "-------------------------------打印數(shù)組差異---------------------------------------------------------------"
# for var in ${diff_list[@]}
# do
# echo "打印數(shù)組差異:"$var
# done
}
# 數(shù)組去重
function hasExist(){
length=${#diff_list[@]}
for (( i=0; i<$length; i++ )); do
for (( j=$(expr $length - 1); j>$i; j-- ));do
if [[ "${diff_list[$i]}" = "${diff_list[$j]}" ]];then
unset diff_list[$i]
fi
done
done
echo
index=0
for arr in ${diff_list[@]};do
array2[$index]=$arr
((index++))
done
echo
length=${#array2[@]}
for ((index=0;index<$length;index++))
do
echo "array2[$index]="${array2[$index]}
done
}
echo "-----------------------------以下是.m中包含的國際化字符串-----------------------------------"
#讀取第一個參數(shù)
read_dir $1
# for var in ${arr1[*]}
# do
# echo "打印的內(nèi)容:"$var
# done
echo "------------------------------以上是.m中包含的國際化字符串----------------------------------"
echo "----------------------------------------------------------------------------------------------"
echo "------------------------------以下是配置文件中包含的國際化字符串----------------------------------"
read_file
# for var in ${arr2[*]}
# do
# echo "打印的內(nèi)容:"$var
# done
echo "------------------------------以上是配置文件中包含的國際化字符串----------------------------------"
echo "----------------------------------------------------------------------------------------------"
echo "-------------------------------以下是數(shù)組比較---------------------------------------------------------------"
check
echo "-------------------------------以下是數(shù)組去重---------------------------------------------------------------"
hasExist
執(zhí)行腳本
sh check.sh 項(xiàng)目文件夾名稱