可选项(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
阅读全文…
不得不再一次说,Advanced bash-scripting guide(a.k.a ABS)这本书太强悍了,对于bash里的Here Document用法,我说见过的其他关于shell/bash编程的书里,都是简单的介绍这个东西是做什么的,基本用法是什么,然后给出一个例子就完成了。我也一直以为他就是为了便于多行的输入。但是看完ABS对此一整章的介绍,我才发现,其实here document没有那么简单。这里就不全文翻译了,把几种用法总结一下吧。
阅读全文…
写着好玩写的,纯粹是想知道最后那个校验码是怎么算出来的,具体的算法可以参考这里
更详细的例子,可以参考下面的链接:
http://www.heybrain.com/notheal/article/1138.html
我这里是用shell实现了,其实用C实现应该是最好的,毕竟算法的东西,C还是要快很多,我本是打算用C的,结果发现我都忘记得差不多了,连最简单的申明数组并初始化都忘记了,于是只要用效率比较低的shell,不过在做一些匹配和校验的时候,感觉比C要方便一些,不多说了,给代码
阅读全文…
摘自Advanced Bash-Scripting Guide V6.0.05第部分第三章的特殊字符中的片断,并做了翻译。
- Ctl-A 将光标移到行首
- Ctl-B 退格键(但是我在ubuntu 9.10 bash 3.2.48上测试却是向前移动光标,并不删除该字符)
- Ctl-C 中断. 中断一个前台任务 阅读全文…
#!/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
#!/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
注意!!!!这里面的例子全部是错误的!!!
=====变量使用=====
1.将bash保留字符串定义为变量名/变量名中含有保留字符
case=123 #case是保留字串
ca((=123 #((是保留字符
var-1=123 #-是保留字符,用var_1好了
阅读全文…
近期评论