LinuxSir.cn,穿越时空的Linuxsir!

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

【shell技巧交流区】:[把你的shell技巧贴出来,让我们分享]

[复制链接]
发表于 2007-1-8 15:28:20 | 显示全部楼层
Post by KornLee
有的时候,我们对用户的输入要作必要的检测,如,限制输入的长度/类型.举例说明:

  1. #!/bin/ksh
  2. #要求用户必须输入四个数字
  3. while true
  4. do
  5. echo -n "请输入四个数字:"
  6. read num
  7. len=${#num}
  8. #变量len存放输入的长度
  9. if [[ $num != [0-9][0-9][0-9][0-9] || $len != 4 ]] then
  10. #进行检测,如果你输入有非数字字符,或者长度不等于四个,便提示错误信息
  11. echo "错误! 重新输入"
  12. continue
  13. else
  14. echo "输入正确,退出!";exit 0
  15. fi
  16. done
复制代码

这是个例子,在我们编写脚本中可以借鉴


KornLee, 这个的意思我大概明白,但对len=${#num}的用法,还有$,#具体表示什么意思不甚了解,请指教,谢谢了
回复 支持 反对

使用道具 举报

发表于 2007-1-8 15:53:20 | 显示全部楼层
Post by KornLee
用位置参数比较简单!
cat bj
#! /bin/bash
echo "max(for i in $(echo $*);do echo $i;done|sort -n|sed -n '$p')"

[javalee//home/javalee/myshell]bj 23 45 9 4 3 45 3 3 2 2 1 45
max:45


能不能再 细一点结束一哈阿,我看不太懂,cat 是什么意思?
回复 支持 反对

使用道具 举报

发表于 2007-2-3 16:55:41 | 显示全部楼层
不错。写的很棒,up 一个~
回复 支持 反对

使用道具 举报

发表于 2007-2-18 15:22:47 | 显示全部楼层
#!/bin/bash
yourip=`ifconfig eth0|grep 'inet addr'|cut -d: -f2|cut -d ' ' -f1`
echo "you eth1 ip is :['$yourip']'"


获得本机ip,我刚刚学
回复 支持 反对

使用道具 举报

发表于 2007-6-4 17:44:12 | 显示全部楼层
Post by lxj821212
#!/bin/bash
yourip=`ifconfig eth0|grep 'inet addr'|cut -d: -f2|cut -d ' ' -f1`
echo "you eth1 ip is :['$yourip']'"


获得本机ip,我刚刚学
不一定网卡就是eth0
也可能是iprb0,ce0,eri0.....
回复 支持 反对

使用道具 举报

发表于 2007-12-29 13:35:10 | 显示全部楼层
Post by javalee;197584
用自动导入函数的方法,可以在命令行下像执行命令一样快捷,而且速度快,占用资源少.
1,建立自己的函数库
mkdir functionlib
然后将常用的脚本改成函数的语法,如:
function filename { command ; }
将filename拷贝到functionlib中,
2,修改环境文件,在/etc/profile中添加
export FPATH=$HOME/functionlib
3,重登录一下
这样的话,你就可以随时用像ls那样运行你自己的filename"命令"
而不需要用什么dot,sh,来运行你的函数/脚本啦~~
如果在脚本中运行,可以在脚本顶部用
#!/bin/sh
##
autoload filename        //来自动导入函数.
...
filename                //调用函数
...
我按照你说的做了怎么还是不行呢???
出现的错误是 autoload 不认识!
回复 支持 反对

使用道具 举报

发表于 2008-1-4 22:07:27 | 显示全部楼层
Post by 777;267699
#比较两个数的大小
#! /bin/bash
max=$1
while [ $2 ]; do
[ $max -lt $2 ] && max=$2
shift
done
echo $max
请你解释一下你的程序的意思好不好!
执行是正确,新手的我还是没有弄明白!!!
回复 支持 反对

使用道具 举报

发表于 2008-3-3 18:18:44 | 显示全部楼层
谢谢分享,学习一下
回复 支持 反对

使用道具 举报

发表于 2008-12-21 10:23:50 | 显示全部楼层
学习了,呵呵
回复 支持 反对

使用道具 举报

发表于 2009-2-10 21:20:33 | 显示全部楼层
Post by KornLee;261992
有些单词在一篇文章中经常会出现很多次,怎么统计这个单词的个数呢?!
如:文件kshfile,统计shell这个单词的个数,
$cat kshfile
ksh
The "Korn" shell, written by David Korn of AT&T Bell Labs (now Lucent). Written as a major upgrade to "sh", it is compatible with it, but has many more internal commands for the most frequently used functions. It also incorporates most of the same features from tcsh which enhance interactive use (command line history recall etc.). This shell is now available on most systems. It was slow
to gain acceptance because earlier versions were encumbered by AT&T licensing.
$cat kshfile|tr " " "\n"|grep -wc shell
2


我不太晓得tr的意思,但是好像你这个命令好像不能处理一行里面有多个单词的情况,就比如shell is shell
因为以前受过折磨,我用的是参数-o
[\code]
grep -o kshfile shell |  wc -l
[\code]
这样的话一行里出现多个单词的情况也能处理
回复 支持 反对

使用道具 举报

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

本版积分规则

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