当前位置:  技术问答>linux和unix

shell编程实例研讨:有兴趣者请进!

    来源: 互联网  发布时间:2015-05-11

    本文导语:  #!/bin/sh #Description: search command matched with some charactor from system path #Author:  #Date:   10/28/2003 echo $PATH >>./path.log cat ./path.log | grep -v '^#'| while read COMLINE do SEARCH_PATH=`gawk 'BEGIN {FS=":"}; {print $1}' ./path.log` ech...

#!/bin/sh
#Description: search command matched with some charactor from system path
#Author: 
#Date:   10/28/2003

echo $PATH >>./path.log

cat ./path.log | grep -v '^#'| while read COMLINE
do
SEARCH_PATH=`gawk 'BEGIN {FS=":"}; {print $1}' ./path.log`
echo $SEARCH_PATH
COMMANDS= ls -ar $SEARCH_PATH | grep  '^b'
for com in $COMMANDS
        do
if [ test -n $com ]; then
echo $com
fi;
done

done
echo "all commond begin with  "b" listed"
***********************************************************
上面是本人写的一个shell程序,目的是从当前系统命令中查询以"b"开始的命令,并将他们输出,很简单,但本人刚学shell编程,对于其中的一些语法技巧及命令不是很熟,导致目前程序不能正常运行,希望高手能够给予指点其中的错误,或给出更简单的做法,本人不胜感激!

|
这样:
#!/bin/sh
#Description: search command matched with some charactor from system path
#Author:
#Date:   10/28/2003


OLDIFS=IFS
IFS=":"
for SEARCH_PATH in $PATH
do
        echo $SEARCH_PATH
        COMMANDS= ls -ar $SEARCH_PATH | grep  '^b'
        for com in $COMMANDS
        do
                if [ test -n $com ]; then
                echo $com
                fi;
        done

done
echo "all commond begin with  "b" listed"

|
IFS=":"
for sp in $PATH
do
        find $sp -name "b*" -type f -perm -111 -print 2>/dev/null
done

|
在COMLINE不知道的情况下,应当去掉while语句,实际上不必用循环也可以一次列出所有的以b开头的命令。

#!/bin/sh

echo $PATH >>./path.log

cat ./path.log | grep -v '^#'
cat ./path.log | tr ":" " " > ./path.log

         SEARCH_PATH=`gawk 'BEGIN {FS=":"}; {print $0}' ./path.log`
echo $SEARCH_PATH
COMMANDS= ls -ar $SEARCH_PATH | grep  '^b'
for com in $COMMANDS
        do
if [ test -n $com ]; then
echo $com
fi;
done
echo "all commond begin with  "b" listed"


|
to cathy97 (今夜不寂寞) :我知道你的意思了
看看这个脚本,应该好用了!
另外,脚本中RS(Record Separator)和FS(Field Separator),不可以混用。相对应的还有ORS和OFS,具体可以查相关资料
#!/bin/sh

echo $PATH > ./path.log
i=`gawk 'BEGIN{RS=":"};{print $0}' ./path.log | wc -l` #得到PATH中路径的个数
j=1

while [ $j -le $i ]        #针对每一个路径,列出以b开头的命令
do
   SEARCH_PATH=`gawk 'BEGIN{FS=":"};{print $'$j'}' ./path.log`
   echo $SEARCH_PATH
   declare -a COMMANDS=`ls -ar $SEARCH_PATH | grep '^b'`
   for com in $COMANDS
     do 
       if [ $com ]
       then
         echo $com
        fi
     done
j=`expr $j + 1`
done 

|
#!/bin/sh
#Description: search command matched with some charactor from system path
#Author: 
#Date:   10/28/2003

echo $PATH >>./path.log

cat ./path.log | grep -v '^#'| while read COMLINE # COMLINE为var,"read"的结果放
                                                  # $COMLINE
do
SEARCH_PATH=`gawk 'BEGIN {FS=":"}; {print $1}' ./path.log` #这里应该没错
                       # 至于结果有没有,你要看 ./path.log
echo $SEARCH_PATH
COMMANDS= `ls -ar $SEARCH_PATH | grep  '^b'` #我只改这里
for com in $COMMANDS
        do
if [ test -n $com ]; then
echo $com
fi;
done

done
echo "all commond begin with  "b" listed"



|
SEARCH_PATH=`gawk 'BEGIN {FS=":"}; {print $1}'` #$1本意是指匹配{FS=":"}的第一条字段,'n'为行标记,$PATH只是一行,$1为第一条匹配字段.
如你要用gawk,你可以这样:
SEARCH_PATH=`gawk 'BEGIN {RS=":"}; {print $1}' ./path.log`  #RS为内部变量,为换行标记,有点象FS;

    
 
 

您可能感兴趣的文章:

  • linux bash shell命令:文本搜索工具Grep命令选项及实例
  • C++实现简单的希尔排序Shell Sort实例
  • linux bash shell中case语句的实例
  • 如何使用shell脚本替换不确定文本信息?实例!
  • Linux命令编辑器Shell编程实例大全 下载
  • shell监控脚本实例—监控mysql主从复制
  • Shell中的循环语句for、while、until实例讲解
  • 通过实例深入理解linux shell数组
  • linux shell流程控制语句实例讲解(if、for、while、case语句实例)
  • shell中的循环语句、判断语句实例
  • 总结的7个shell字符串操作方法和实例分享
  • shell数组常用实例分享
  • 论坛 iis7站长之家
  • Shell脚本test命令使用总结和实例
  • Shell多线程操作及线程数控制实例
  • Shell脚本处理浮点数的运算和比较实例
  • shell常用重定向实例讲解
  • shell使用mysqld_multi自动做多实例从库脚本
  • Shell脚本编程中常用的数学运算实例
  • 备份shell脚本实例代码
  • shell脚本连接、读写、操作mysql数据库实例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux下c语言写的shell,花了不少时间写得 有兴趣的可以看看,本人linux初学者
  • 帮我写个简单的shell,有兴趣的进来看下,谢谢了
  • Centos6下安装Shell下文件上传下载rz,sz命令
  • 不同类型的shell*(K SHELL , C SHELL) 用命令怎么切换?
  • linux bash shell命令:grep文本搜索工具简介
  • 我在执行shell时,想在shell里直接向mysql数据库插入数据,我该如何写shell。
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 菜鸟问问题:shell是什么呢?普通的ls、cp、pwd这些命令算不算shell呢?如何把自己写的文件变成shell呢?
  • linux bash shell命令:文本搜索工具grep中用于egrep和 grep -E的元字符扩展集
  • 傻瓜问题,请问shell编程和shell脚本编程的关系
  • linux bash shell命令:文本搜索工具grep正则表达式元字符集(基本集)
  • shell变量和子shell的问题请教
  • 请问“当前shell”和“子shell”的区别?
  • 怎么知道当前是B_SHELL 还是C_SHELL
  • 用户登陆后运行某SHELL退出SHELL就回到LOGIN是怎么作到的?
  • 怎么写shell代码 写好shell怎么运行?
  • 请问一个shell中如何获取这个shell自身抛出的错误?
  • 非登录shell是什么 意思,和登录shell有什么区别啊
  • Solaris 8中修改root的shell为一个非法的Shell后怎么办?
  • 各位Shell高人,如何取得Shell的第10个入口参数?$10不行啊,急!
  • shell 编程 执行shell新建多个终端 并执行程序
  • 如何在一台机器上的shell中执行另外一台机器上的shell
  • 在shell中的交互问题,现在需要在shell结束时按某键或任意键


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3