自己正在学习shell,想通过shell利用awk统计文本中某些内容出现的次数,用select建立了一个菜单,我想的是有没有办法在菜单中输入的内容,转换为脚本定义的变量,现在脚本只能利用$1 $2带参数来实现统计,zsh count.sh 参数1(a1.txt统计的文本) 参数2(aaa.com统计的内容),我想能不能有办法在select菜单中输入a1.txt,跳入下一个菜单再输入aaa.com显示统计数,主要菜单中输入a1.txt怎么在脚本中定义变量
cat a1.txt
aaa.com
aaa.com
bbb.com
bbb.com
bbb.com
ccc.net
ccc.net
#!/bin/bash
count=`cat $1 |awk '{a[$1]+=1;} END {for(i in a){print a" "i;}}'`
statistics=`echo $count |grep $2`
PS3="Please input Query Domain: "
select item in "Domain"
do
if [ -n "$count" ]; then
echo -e "Query File Statistics\n$statistics"
break
else
echo "Exit Query"
fi
done
exit 0
shell变量问题
- astolia
- 论坛版主
- 帖子: 6460
- 注册时间: 2008-09-18 13:11
-
- 帖子: 94
- 注册时间: 2010-01-08 13:09
Re: shell变量问题
comm1=`cat $filename |awk '{a[$1]+=1;} END {for(i in a){print a" "i;}}' |sort -k 1 -n -r`
if [[ -n $comm1 ]]; then
IFSOLD=$IFS
IFS=,
echo " \"C\" stats"
echo " \"Q\" exit"
read -p "Please input \"C\" or \"Q\" :" input
case $input in
C | c )
read -p "Please Enter stats required name: "
#echo $REPLY
echo $comm1 |grep $REPLY
;;
Q | q )
echo "quit"
;;
esac
else
echo "ok"
fi
IFS=${IFSOLD}
谢谢大佬指点,搞成了low版统计 ,麻烦问一下大佬平时linux你都看什么书,我买了鸟哥私房菜第四版,linux就该这么学,还有linux命令大全,像对shell感兴趣是不是要学习c语言之类的
- astolia
- 论坛版主
- 帖子: 6460
- 注册时间: 2008-09-18 13:11