存档

文章标签 ‘bash’

bash的可选项

2009年8月26日 wgzhao 没有评论

可选项(options)设置用来改变shell或者脚本的行为。
set指令可以使得在一个脚本里设置可选项。在脚本你需要设置可选项的地方,实用set -o option-name,或者采取缩写模式的set -option-abbrev。这两种形式效果等价。
比如

#!/bin/bash
set -o verbose
#Echoes all commands before executing
#---------------------------
set -v
#Exact same effect as above

阅读全文…

分类: Linux技术 标签: , ,

bash里的here document

2009年8月24日 wgzhao 2 条评论

不得不再一次说,Advanced bash-scripting guide(a.k.a ABS)这本书太强悍了,对于bash里的Here Document用法,我说见过的其他关于shell/bash编程的书里,都是简单的介绍这个东西是做什么的,基本用法是什么,然后给出一个例子就完成了。我也一直以为他就是为了便于多行的输入。但是看完ABS对此一整章的介绍,我才发现,其实here document没有那么简单。这里就不全文翻译了,把几种用法总结一下吧。
阅读全文…

分类: Linux技术 标签: , ,

用shell升级15位身份证到18位

2009年8月20日 wgzhao 1 条评论

写着好玩写的,纯粹是想知道最后那个校验码是怎么算出来的,具体的算法可以参考这里

更详细的例子,可以参考下面的链接:

http://www.heybrain.com/notheal/article/1138.html

我这里是用shell实现了,其实用C实现应该是最好的,毕竟算法的东西,C还是要快很多,我本是打算用C的,结果发现我都忘记得差不多了,连最简单的申明数组并初始化都忘记了,于是只要用效率比较低的shell,不过在做一些匹配和校验的时候,感觉比C要方便一些,不多说了,给代码

阅读全文…

分类: 技术技巧 标签: , ,

bash里的一些控制字符

2009年8月15日 wgzhao 没有评论

摘自Advanced Bash-Scripting Guide V6.0.05第部分第三章的特殊字符中的片断,并做了翻译。

  • Ctl-A 将光标移到行首
  • Ctl-B 退格键(但是我在ubuntu 9.10 bash 3.2.48上测试却是向前移动光标,并不删除该字符)
  • Ctl-C 中断. 中断一个前台任务 阅读全文…

用bash校验IP地址

2008年6月30日 wgzhao 没有评论

代码:

#!/bin/bash
 
# Test an IP address for validity:
# Usage:
#      valid_ip IP_ADDRESS
#      if [[ $? -eq 0 ]]; then echo good; else echo bad; fi
#   OR
#      if valid_ip IP_ADDRESS; then echo good; else echo bad; fi
#
function valid_ip()
{
local  ip=$1
local  stat=1
 
if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
OIFS=$IFS
IFS='.'
ip=($ip)
IFS=$OIFS
[[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \
&& ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
stat=$?
fi
return $stat
}
 
# If run directly, execute some tests.
if [[ "$(basename $0 .sh)" == 'valid_ip' ]]; then
ips='
4.2.2.2
a.b.c.d
192.168.1.1
0.0.0.0
255.255.255.255
255.255.255.256
192.168.0.1
192.168.0
1234.123.123.123
'
for ip in $ips
do
if valid_ip $ip; then stat='good'; else stat='bad'; fi
printf "%-20s: %s\n" "$ip" "$stat"
done
fi

测试:

# sh valid_ip.sh
4.2.2.2             : good
a.b.c.d             : bad
192.168.1.1         : good
0.0.0.0             : good
255.255.255.255     : good
255.255.255.256     : bad
192.168.0.1         : good
192.168.0           : bad
1234.123.123.123    : bad
分类: 技术技巧 标签: , , ,

bash里面计算的几种方法

2005年6月2日 wgzhao 没有评论
#!/bin/bashn=1;echo -n "$n "

let "n = $n + 1" #note: let "n = n + 1" also worksecho -n "$n "

: $((n=$n+1))# ":" necessary beacause otherwise bash attempts# + to interpret "$((n=$n+1))" as a commandecho -n "$n "

n=$(($n + 1 ))echo -n "$n "

: $[ n = $n + 1 ]echo -n "$n "

n=$[ $n + 1 ]echo -n "$n "echo  -e

exit 0

分类: Linux技术 标签: ,

求最大公约数的bash脚本

2005年6月2日 wgzhao 没有评论
#!/bin/bash#greatest common divisorARGS=2E_BADARGS=65if [ $# -ne "$ARGS" ]then        echo "Usage: `basename $0` first-interage second-interage"        exit $E_BADARGS;fi

gcd(){        diviend=$1        divisor=$2        until [ ! $diviend -ne $divisor ]        do                if [ $diviend -lt $divisor ]                then                        temp=$diviend                        diviend=$divisor                        divisor=$temp                fi        let "diviend=$diviend - $divisor";        done}gcd $1 $2echo ; echo "GCD of $1 and $2 = $diviend"; echoexit 0
分类: Linux技术 标签: ,

一些bash编程中常犯的错误!

2005年5月31日 wgzhao 没有评论

注意!!!!这里面的例子全部是错误的!!!

=====变量使用=====
1.将bash保留字符串定义为变量名/变量名中含有保留字符

case=123 #case是保留字串
ca((=123 #((是保留字符
var-1=123 #-是保留字符,用var_1好了

阅读全文…

分类: Linux技术 标签: ,