LinuxSir.Org  
| 网站首页 | 论坛帮助 |

欢迎来到LinuxSir.Org!
您还未登录,请登录后查看论坛,或者点击论坛上方的注册链接注册新账号。


发表新主题 回复
置顶的主题 精华主题  
主题工具
旧 07-08-16, 23:09 第 151 帖
skinhend
 
 
 
注册会员  
  注册日期: Aug 2007
  帖子: 5
  精华: 0
 

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


引用:
作者: 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
  skinhend 当前离线   回复时引用此帖
旧 07-08-21, 10:35 第 152 帖
cppgp
 
 
 
注册会员  
  注册日期: Feb 2007
  帖子: 3
  精华: 0
 

#/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
  cppgp 当前离线   回复时引用此帖
旧 07-09-14, 23:35 第 153 帖
天涯海客
 
 
 
注册会员  
  注册日期: Jun 2007
  帖子: 9
  精华: 0
 

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


源代码如下
Drcom文件:
代码:
#!/bin/bash #drcom.sh echo " =================================================" echo " READ ME " echo " =================================================" echo " " echo " *************************************************" echo " * Input L —— Login *" #输入字母L 登陆Drcom echo " * Input O —— Logout *" #输入字母O 退出Drcom echo " * Input G —— Alter the file drcom.conf *" #输入字母G 修改drcom.conf文件 echo " * Input Q —— Quit *" #输入字母Q 退出Drcom echo " **************************************************" echo " " while echo -n "Please Input : " #输入相应的字母 do read I message_1="Please Input The Password !" #请输入当前系统用户密码 case $I in L|l) echo $message_1 echo "' sudo drcomd sudo drcomc login ;; O|o) sudo drcomc logout sudo killall drcomd echo ;; G|g) echo $message_1 sudo gedit /etc/drcom.conf ;; Q|q) break ;; *) echo -n "Error! Do You Want To Continue (y/n)?:" #输入错误。是否继续 read IS_CONTINUE case $IS_CONTINUE in y|yes|Y|Yes|YES) contiune ;; *) echo "Bybe!!" sleep 3 break ;; esac esac done
该文件我将其保存在了opt目录之下。大家可根据各自习惯做相应更改

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

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

在新增的文件Drcom.desktop内加入下面这几行
代码:
[Desktop Entry] Name=Drcom Comment=drcom Client Exec=/opt/Drcom Icon=/opt/net.png #可换为自己喜欢的PNG图片并将图片放置由opt目录下 Terminal=true #在终端中运行 Type=Application Categories=Application;Network;

此帖于 07-10-06 00:06 被 天涯海客 编辑.
  天涯海客 当前离线   回复时引用此帖
旧 08-04-24, 13:53 第 154 帖
bjsm
 
 
 
注册会员  
  注册日期: May 2006
  帖子: 695
  精华: 0
 

引用:
作者: KornLee
特别感谢作者: ilmargaret兄

脚本很简单却很实用,尤适合于编程初学者和英语太菜的人.
功能: 任何时候在命令行里输入你想查找的命令名称,该脚本都会显示此命令的详细用法,而且是中文的哦.
脚本名称:showme
代码:
csplit -sf help /root/scripts/functionlib/datafile.txt /"command: $1"/ '/over/' 2>errors if [ $? -eq 0 ] then more help01 rm help?? else echo Sorry,the commnand $1 was not found in your datafile! 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编程很有用!



为何我看不到附件?
  bjsm 当前离线   回复时引用此帖
旧 08-04-24, 14:04 第 155 帖
bjsm
 
 
 
注册会员  
  注册日期: May 2006
  帖子: 695
  精华: 0
 

引用:
作者: KornLee
特别感谢作者: ilmargaret兄

脚本很简单却很实用,尤适合于编程初学者和英语太菜的人.
功能: 任何时候在命令行里输入你想查找的命令名称,该脚本都会显示此命令的详细用法,而且是中文的哦.
脚本名称:showme
代码:
csplit -sf help /root/scripts/functionlib/datafile.txt /"command: $1"/ '/over/' 2>errors if [ $? -eq 0 ] then more help01 rm help?? else echo Sorry,the commnand $1 was not found in your datafile! 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编程很有用!



为何我看不到附件?
  bjsm 当前离线   回复时引用此帖
旧 08-06-10, 21:45 第 156 帖
xiooli
 
 
 
注册会员  
  注册日期: Feb 2008
  帖子: 6
  精华: 0
 

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 ""
我写的进度条,赫赫。
  xiooli 当前离线   回复时引用此帖
旧 08-10-30, 16:39 第 157 帖
zyl19861126
 
 
 
注册会员  
  注册日期: Aug 2007
  帖子: 407
  精华: 0
 

超级简单的程序。 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'.
  zyl19861126 当前离线   回复时引用此帖
旧 09-01-08, 10:41 第 158 帖
c20031776
 
 
 
注册会员  
  注册日期: Jan 2009
  帖子: 3
  精华: 0
 

获取网关mac地址
#!/bin/bash
echo "请输入网关IP地址:"
read ip
arp -a | grep $ip | awk '{print $4}'


在rhel4下测试可用
  c20031776 当前离线   回复时引用此帖
旧 09-01-08, 10:44 第 159 帖
c20031776
 
 
 
注册会员  
  注册日期: Jan 2009
  帖子: 3
  精华: 0
 

获取网关mac地址:
#!/bin/bash
echo "请输入网关IP地址:"
read ip
arp -a | grep $ip | awk '{print $4}'


在rhel4下测试可用
  c20031776 当前离线   回复时引用此帖
旧 09-01-08, 14:16 第 160 帖
c20031776
 
 
 
注册会员  
  注册日期: Jan 2009
  帖子: 3
  精华: 0
 

查看用户是否存在:
#!/bin/bash
echo "请输入用户名:"
read name
if grep "$name" /etc/passwd > /dev/null 2>&1
then
echo 存在该用户
else
echo 用户不存在
fi
  c20031776 当前离线   回复时引用此帖
旧 09-03-04, 06:23 第 161 帖
fmying 帅哥
 
fmying 的头像
 
 
注册会员  
  注册日期: Mar 2006
  我的住址: 厦门
  帖子: 581
  精华: 0
 

标题: 一个穷极无聊之下写的除法计算器


bash的只能给出整数结果,所以,写了那么一个脚本。


代码:
#!/bin/bash #ZERO=0 #ONE=1 LEAST=2 STAND=3 if [ "$#" -lt "$LEAST" ]; then echo usage: float.sh A B [NF] echo " " calculate A/B with NF digits after point echo " " default is 5 digits exit else A=$1 B=$2 fi NF=5 if [ "$#" -ge "$STAND" ]; then NF=$3 fi out="" for ((i=0;i<=$NF;i++)) do if [ "$i" = '1' ];then out="${out}." fi C=`expr $A / $B` A=`expr $A % $B` if [ "$A" = '0' ];then i=$NF fi if [[ "$A" != '0' && "$i" -eq "$NF" ]];then if [[ "$A" > '4' ]];then C=`expr $C "+" 1` fi fi A=`expr $A "*" 10` out="${out}${C}" done echo $out







__________________
上善若水,好好灌水……
穷折腾,折腾穷,越穷越折腾……
  fmying 当前离线   回复时引用此帖
旧 09-06-22, 15:07 第 162 帖
njuptor
 
njuptor 的头像
 
 
注册会员  
  注册日期: Jun 2009
  我的住址: Nanjing
  帖子: 1
  精华: 0
 

好~~学习了,牛人







__________________
linux~~,i like it ,just do it!
  njuptor 当前离线   回复时引用此帖
旧 09-07-03, 20:55 第 163 帖
zhaomf
 
 
 
注册会员  
  注册日期: Jun 2009
  帖子: 1
  精华: 0
 

标题: MySQL备份并上传到FTP的shell脚本


#!/bin/bash

########################################################################
## Author:zhao mingfeng ##
## Date:2009-05-12 ##
## Copyright(c) 2009, zhaomf All Rights Reserved ##
########################################################################

# this shell aimed at 2 points:
# 1.use mysqldump backup mysql database bwisp to /backup/mysql.
# 2.upload /backup/mysql backup files to a delicated ftp address.

# before start this shell you should set privileges use chmod as fllows
# chmod 755ftp.sh

echo
echo "__________________________start_________________________"
################ use mysqldump backup mysql database bwisp ################

echo "$(date +%Y-%m-%d_%HMS)"
echo "++++++++++start using mysqldump backup mysql database +++++++++"
MyUSER="bwisp2" #usename
MyPASS="bwisp2" #password
MyHOST="192.168.168.4" #hostname of host ip

# Linux bin paths, change this if it can't be autodetected via which command
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
CHOWN="$(which chown)"
CHMOD="$(which chmod)"
TAR="$(which tar)"
GZIP="$(which gzip)"
TOUCH="$(which touch)"
CAT="$(which cat)"

# Backup Dest directory, change this if you have someother location
DEST="/backup"

# Main directory where backup will be stored
MBD="$DEST/mysql"

# Get hostname
HOST="$(hostname)"

# Get data in yyyy-mm-dd format
NOW="$(date +"%Y-%m-%d")"

# File to store current backup file
FILE=""

# Store list of databases
DBS=""

# DO NOT BACKUP these databases
FANFAN="information_schema"

[ ! -d $MBD ] && mkdir -p $MBD || :

# Only root can access it!
$CHOWN 0.0 -R $DEST
$CHMOD 0600 $DEST

# Get all database list first
DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')"
for db in $DBS
do
skipdb=-1
if [ "$FANFAN" != "" ];
then
for i in $FANFAN
do
[ "$db" == "$i" ] && skipdb=1 || :
done
fi

if [ "$skipdb" == "-1" ] ; then
FILE="$MBD/$db.$HOST.$NOW.gz"
# do all inone job in pipe,
# connect to mysql using mysqldump for select mysql database
# and pipe it out to gzip file in backup dir
$MYSQLDUMP -u $MyUSER -h $MyHOST -p$MyPASS $db | $GZIP -9 > $FILE
fi
done
echo "$(date +%Y-%m-%d_%HMS)"
echo "+++++++++ finished dump mysql databases to $MBD +++++++++"
################## starting upload files to delicated ftp ##################
$TOUCH $MBD/ftp.cmd
FTP_CMD=$MBD/ftp.cmd
FTP=xxx.xxx.xxx.xxx
echo "$(date +%Y-%m-%d_%HMS)"
echo "+++++++++++++++ start uploading $MBD back files to ftp:${FTP} +++++++++++++++++++++"
echo "open ${FTP}" > ${FTP_CMD}
echo "user xx xx" >> ${FTP_CMD}
echo "bin" >> ${FTP_CMD}
echo "hash" >> ${FTP_CMD}
echo "put $FILE /$db.$HOST.$NOW.gz" >> ${FTP_CMD}
echo "close" >> ${FTP_CMD}
echo "bye" >> ${FTP_CMD}
$CAT ${FTP_CMD} | ftp -n
rm ${FTP_CMD}
rm $FILE
echo "$(date +%Y-%m-%d_%HMS)"
echo "+++++++++++ finished upload files to ftp:${FTP} +++++++++++++++"
echo "_______________________________end___________________________"
echo
################################## the end ##################################

此帖于 09-07-03 20:59 被 zhaomf 编辑.
  zhaomf 当前离线   回复时引用此帖
旧 10-08-24, 11:49 第 164 帖
Linux色
 
 
 
注册会员  
  注册日期: Jun 2010
  我的住址: 江苏
  帖子: 6
  精华: 0
 

这个帖子非常好。不过脚本还有待完善,还有很多值得讨论的地方,我刚看第一个,就发现了问题:1、脚本只能修改最后一行,其他行修改之后被原来的覆盖 2、如果文件存在特殊字符(如'/'),脚本报错。希望能有个专门讨论该帖子的脚本的空间……
  Linux色 当前离线   回复时引用此帖
旧 10-08-24, 11:51 第 165 帖
Linux色
 
 
 
注册会员  
  注册日期: Jun 2010
  我的住址: 江苏
  帖子: 6
  精华: 0
 

标题: 该帖子值得讨论,希望有人组织一个讨论群或组,专门讨论该帖子的脚本


这个帖子非常好。不过脚本还有待完善,还有很多值得讨论的地方,我刚看第一个,就发现了问题:1、脚本只能修改最后一行,其他行修改之后被原来的覆盖 2、如果文件存在特殊字符(如'/'),脚本报错。希望能有个专门讨论该帖子的脚本的空间……
  Linux色 当前离线   回复时引用此帖
发表新主题 回复


主题工具

发帖规则
您 [不可以] 发表新主题
您 [不可以] 回复主题
您 [不可以] 上传附件
您 [不可以] 编辑您的帖子

已 [启用] BB 代码
已 [启用] 表情符号
已 [启用] IMG 代码
已 [禁用] HTML 代码
[论坛跳转…]


所有时间均为[北京时间]。现在的时间是 18:03


Powered by vBulletin 版本 3.6.8
版权所有 ©2000 - 2012, Jelsoft Enterprises Ltd.
官方中文技术支持: vBulletin 中文
版权所有 ©2002 - 2011, LinuxSir.Org