LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: KornLee

【shell脚本欣赏区】:[展示你的作品的好去处!欢迎投帖]

[复制链接]
发表于 2007-8-16 23:09:31 | 显示全部楼层

下载的那个页面 要转码,不然的话 echo "没有该城市的天气讯息!"

Post by chainone
//前面的漏了一点东西,在VI中没有全部COPY出来,不好意思下面是完整的。

天气预报(限国内城市)
用法
WeatherReport 城市名
如城市名为空则默认为南京

刚学SHELL,请高手指教
=============================================================================
#weather reporter@chainone
place=$1
if test "$place" = ""
then
place="南京"
fi

rm -f index.shtml
wget -q http://weather.sina.com.cn/text/index.shtml


ifzhixia=$(grep "$place" -c index.shtml)
if test "$ifzhixia" = 2
then
cat index.shtml | grep "$place" -A 3 |sed '1d' | grep '>.\+<' -o |tr -d '<'|tr -d '>' > .weathertemp2
elif test "$ifzhixia" = 1
then
cat index.shtml | grep "$place" -A 3 | grep '>.\+<' -o |tr -d '<'|tr -d '>' > .weathertemp2
#cat index.shtml | grep "$place" -A 3 | grep '>.\+<' -o |sed 's/.//' | sed 's/.$//' > .weathertemp2
else
echo "没有该城市的天气讯息!"
exit 0
fi

placetitle="城市: "
condition="天气状况: "
wind="风向风力: "
tempr="最低温度:        "
echo "$placetitle" > .weathertemp
echo "$condition" >> .weathertemp
echo "$wind" >> .weathertemp
echo "$tempr" >> .weathertemp

paste .weathertemp .weathertemp2
rm -f index.shtml


我这样处理后正常了,我的默认 UTF-8 的
wget下面加一句:
iconv -f GB2312 -t UTF-8 index.shtml > index.shtml1

下面的  index.shtml 改为: index.shtml1
最后面 加一句:
rm -f index.shtml1
回复 支持 反对

使用道具 举报

发表于 2007-8-21 10:35:06 | 显示全部楼层
#/bin/bash

#author : cppgp
#function: replace string
#time : 2007 08 17 08:45

if [ ! -n "$3" ]
then
   echo
   echo
   echo -e "  Usage:"
   echo -e "\t`basename $0` need three parameters at least"
   echo -e "\tand the parameters like as : source dest replace.txt"
   echo -e "\tand wildcard can be used in filename , like as : source dest *.txt!"
   echo
   echo
   exit 127
fi

echo
echo "source =$1"
echo "dest   =$2"
echo
echo "replace begin......."
echo
echo

#protect-self
scriptself=${0##*/}

index=1
for arg in "$@"
do
{
if [ "$index" -gt 2 -a $arg != $scriptself ]
   then
     echo "now replace file $arg ......"
     sed "s/$1/$2/" $arg -i.bak
fi
let "index+=1"
}
done

echo
echo
echo "replace finish ....."
echo

exit 0

#############################
#以下是使用说明
#############################
                        替换脚本使用说明

本文档假设该脚本已经以 replace.sh 保存

1.使用说名:
  1).脚本使用命令行参数来实现替换及待替换文件
  2).参数表如下:
        replace.sh 源串 目的串 文件1 文件2 ... 文件n
        其中文件可以有任意多个,文件名中可以有通配符
  3).执行任何以次操作之后,都会将原文件备份成 filename.bak

2.使用案例
  1).假设在当前文件夹下有 index.html,001.html,002.html,003.txt,004.h,005.cpp 六个文件
     想替换 index.html 中的 211.157.99.197 成 211.157.104.136
     那么替换命令如下:
        ./replace.sh 211.157.99.197 211.157.104.136 index.html
     同时会替换对应字符串且备份 index.html 为 index.html.bak

  2).假设在当前文件夹下有 index.html,001.html,002.html,003.txt,004.h,005.cpp 六个文件
     想替换 index.html , 001.html , 002.html 中的 211.157.99.197 成 211.157.104.136
     那么替换命令如下:
        ./replace.sh 211.157.99.197 211.157.104.136 index.html 001.html
     同时会替换对应字符串且备份 index.html 为 index.html.bak
     同时会替换对应字符串且备份 001.html   为 001.html.bak

  3).假设在当前文件夹下有 index.html,001.html,002.html,003.txt,004.h,005.cpp 六个文件
     想替换所有文件名以.html结尾的文件中的 211.157.99.197 成 211.157.104.136
     那么替换命令如下:
        ./replace.sh 211.157.99.197 211.157.104.136 *.html
     同时会替换对应字符串且备份 index.html 为 index.html.bak
     同时会替换对应字符串且备份 001.html   为 001.html.bak
     同时会替换对应字符串且备份 002.html   为 002.html.bak

  4).假设在当前文件夹下有 index.html,001.html,002.html,003.txt,004.h,005.cpp 六个文件
     想替换所有文件中的 211.157.99.197 成 211.157.104.136
     那么替换命令如下:
        ./replace.sh 211.157.99.197 211.157.104.136 *
     同时会替换对应字符串且备份 index.html 为 index.html.bak
     同时会替换对应字符串且备份 001.html   为 001.html.bak
     同时会替换对应字符串且备份 002.html   为 002.html.bak
     同时会替换对应字符串且备份 003.txt    为 003.txt.bak
     同时会替换对应字符串且备份 004.h      为 004.h.bak
     同时会替换对应字符串且备份 005.cpp    为 005.cpp.bak


3.附注:
        欢迎对本脚本提出批评建议;任何时间可以用email或者TQ联系我!
        TQ    : 8069002
        Email : cppgp@163.com

                                        cppgp
                                        2007-08-17
回复 支持 反对

使用道具 举报

发表于 2007-9-14 23:35:25 | 显示全部楼层

为方便在Ubuntu下使用Drcom而编的SHELL

源代码如下
Drcom文件:

  1. #!/bin/bash
  2. #drcom.sh
  3. echo  "         ================================================="
  4. echo  "                 READ     ME                              "
  5. echo  "         ================================================="
  6. echo  "                                                          "
  7. echo  "         *************************************************"
  8. echo  "         *   Input L —— Login                          *"      #输入字母L 登陆Drcom  
  9. echo  "         *   Input O —— Logout                         *"      #输入字母O 退出Drcom   
  10. echo  "         *    Input G —— Alter the file drcom.conf     *"      #输入字母G 修改drcom.conf文件
  11. echo  "          *   Input Q —— Quit                          *"      #输入字母Q 退出Drcom
  12. echo  "         **************************************************"
  13. echo  "                                                                                             "
  14. while
  15.     echo -n "Please Input : "    #输入相应的字母
  16. do
  17.     read  I
  18.     message_1="Please Input The Password !"   #请输入当前系统用户密码
  19.    case $I in
  20.           L|l)
  21.                     echo $message_1
  22.                     echo  "'
  23.                     sudo drcomd
  24.                     sudo drcomc login
  25.                     ;;
  26.        O|o)
  27.                    sudo drcomc logout
  28.                    sudo killall drcomd
  29.                    echo
  30.                    ;;
  31.        G|g)
  32.                   echo $message_1
  33.                   sudo gedit /etc/drcom.conf
  34.                    ;;
  35.         Q|q)
  36.                    break
  37.                     ;;
  38.            *)
  39.                  echo -n "Error! Do You Want To Continue (y/n)?:"   #输入错误。是否继续
  40.                  read IS_CONTINUE
  41.                  case $IS_CONTINUE in
  42.                                 y|yes|Y|Yes|YES)
  43.                                                         contiune
  44.                                                          ;;
  45.                                *)
  46.                                                       echo "Bybe!!"
  47.                                                      sleep 3
  48.                                                       break
  49.                                                       ;;
  50.                     esac
  51.         esac
  52. done
复制代码

该文件我将其保存在了opt目录之下。大家可根据各自习惯做相应更改

为该文件添加可执行选项
sudo chown -R root:root /opt/Drcom
sudo chmod -R 755 /opt/Drcom

向主菜单的应用程序下的网络项目下添加快捷方式
sudo gedit /usr/share/applications/Drcom.desktop

在新增的文件Drcom.desktop内加入下面这几行

  1. [Desktop Entry]
  2. Name=Drcom
  3. Comment=drcom Client
  4. Exec=/opt/Drcom
  5. Icon=/opt/net.png  #可换为自己喜欢的PNG图片并将图片放置由opt目录下
  6. Terminal=true        #在终端中运行
  7. Type=Application
  8. Categories=Application;Network;
复制代码
回复 支持 反对

使用道具 举报

发表于 2008-4-24 13:53:46 | 显示全部楼层
Post by KornLee;278118
特别感谢作者: ilmargaret兄

脚本很简单却很实用,尤适合于编程初学者和英语太菜的人.
功能: 任何时候在命令行里输入你想查找的命令名称,该脚本都会显示此命令的详细用法,而且是中文的哦.
脚本名称:showme

  1. csplit -sf help /root/scripts/functionlib/datafile.txt /"command: $1"/ '/over/' 2>errors
  2. if [ $? -eq 0 ]
  3. then
  4. more help01
  5. rm help??
  6. else
  7. echo Sorry,the commnand $1 was not found in your datafile!
  8. fi
复制代码

系统设置:将附件和脚本放在/root/scripts/functionlib/下,然后在/etc/profile中做如下改动:

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC 改为:
export PATH=${PATH}:/root/scripts/functionlib USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC ,这样就可以在任何目录下执行该脚本了,就象执行man命令一样.

备注: 附件datafile里你可以不断的添加新的命令,只要添加的命令与我原来的格式一致即可,时间久了就变成手册了,随时查阅,对shell编程很有用!





为何我看不到附件?
回复 支持 反对

使用道具 举报

发表于 2008-4-24 14:04:18 | 显示全部楼层
Post by KornLee;278118
特别感谢作者: ilmargaret兄

脚本很简单却很实用,尤适合于编程初学者和英语太菜的人.
功能: 任何时候在命令行里输入你想查找的命令名称,该脚本都会显示此命令的详细用法,而且是中文的哦.
脚本名称:showme

  1. csplit -sf help /root/scripts/functionlib/datafile.txt /"command: $1"/ '/over/' 2>errors
  2. if [ $? -eq 0 ]
  3. then
  4. more help01
  5. rm help??
  6. else
  7. echo Sorry,the commnand $1 was not found in your datafile!
  8. fi
复制代码

系统设置:将附件和脚本放在/root/scripts/functionlib/下,然后在/etc/profile中做如下改动:

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC 改为:
export PATH=${PATH}:/root/scripts/functionlib USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC ,这样就可以在任何目录下执行该脚本了,就象执行man命令一样.

备注: 附件datafile里你可以不断的添加新的命令,只要添加的命令与我原来的格式一致即可,时间久了就变成手册了,随时查阅,对shell编程很有用!





为何我看不到附件?
回复 支持 反对

使用道具 举报

发表于 2008-6-10 21:45:19 | 显示全部楼层
for ((i=0;i<=100;i++));do printf "["; for ((j=0;j<=$i;j++));do printf ">";done;for ((k=0;k<=100-$j;k++));do printf " ";done ;printf "]  $i%%\r";sleep 0.1;done;echo ""
我写的进度条,赫赫。
回复 支持 反对

使用道具 举报

发表于 2008-10-30 16:39:32 | 显示全部楼层
超级简单的程序。 mac2unix.

#! /bin/sh

for x
do
    echo "Converting $x"
    tr '\r' '\n' <  "$x"  > "tmp.$x"
    mv "tmp.$x"  "$x"
done

将mac下的文件行以\r结尾转换为 unix 下的 \n.

若是 winxp 的 tr '\r\n'  '\n'.
回复 支持 反对

使用道具 举报

发表于 2009-1-8 10:41:36 | 显示全部楼层
获取网关mac地址
#!/bin/bash
echo "请输入网关IP地址:"
read ip
arp -a | grep $ip | awk '{print $4}'


在rhel4下测试可用
回复 支持 反对

使用道具 举报

发表于 2009-1-8 10:44:06 | 显示全部楼层
获取网关mac地址:
#!/bin/bash
echo "请输入网关IP地址:"
read ip
arp -a | grep $ip | awk '{print $4}'


在rhel4下测试可用
回复 支持 反对

使用道具 举报

发表于 2009-1-8 14:16:49 | 显示全部楼层
查看用户是否存在:
#!/bin/bash
echo "请输入用户名:"
read name
if grep "$name" /etc/passwd > /dev/null 2>&1
then
echo 存在该用户
else
echo 用户不存在
fi
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表