我有两个数组:一个是CPU编号数组,另一个是服务器名称数组。
我正在做的是搜索文件以使用同一行上的CPU编号吐出服务器名称。
您可以看到以下代码:
#!/bin/bash
cpu=("Atom" "Q8200" "Q9300" "Q9550" "i5" "i7" "X3440" "E3 1230" "Dell 860"
"Dell r410" "Dell R200" "E5645" "E5504" "Dell 1950"
"Dell 2950 Dual QuadCore Xeon E5420")
tknum=("tk676" "tk619" "tk20013" "tkc676" "tk74001")
for i in "${tknum[@]}" #being loop through tk numbers
do
temp=$(grep -i -m 1 "$i" /home/jeremysd/public_html/servers.txt) #return line tknumber is on and store in variable
#echo "$temp"
echo "$i" #Print out the tk number
for j in "${cpu[@]}" #begin loop through cpu numbers
do
echo "$temp" | grep -io "$j" #Return CPU number
done
done
现在这可以工作并将信息输出如下:
sh array_test.sh
tk676
Q9550
tk619
Dell R200
tk20013
dell R410
tkc676
Q9550
显示服务器名称,然后显示其下的CPU。但是,我希望它以逗号分隔,以便我可以将其导入数据库
e.g:
tk676,q9550
现在,我的想法是将CPU类型存储在临时变量中,然后将其回显,但这样做会导致许多空白行输入到字符串中。
通过CPU类型的循环变为:
for j in "${cpu[@]}" #begin loop through cpu numbers
do
temp1=$(echo "$temp" | grep -io "$j") #Return CPU number
echo $temp1
done
结果如下,并显示额外的空白行。有没有人知道如何在不添加所有额外空格的情况下将CPU变量存储在字符串或数组中?
sh array_test.sh
tk676
Q9550
答案 0 :(得分:2)
检查空结果:
if [ -n "$temp1" ]
then echo "$temp1"
fi