shell编程初步.ppt
文本预览下载声明
$(…)结构 功能与反引号差不多。 优点:1复杂的命令组合比反引号更容易看懂 2 容易实现嵌套 实例 $ cat nu echo there are $(who | wc –l )users logged in $ now=$(date) $ echo $now $ filelist=$(ls) $ echo $filelist 比较:echo “$filelist”,echo ‘$filelist’ $ namelist =$(cat names) $ echo “$namelist” 实例 filename=/home/zsh/express filename=$(echo $filename | tr “$(echo $filename | cut –cl)” “^”) echo $filename 参数传递 $# 命令行中所键入的参数个数 $ cat args echo $# arguments passed echo arg 1=:$1,arg 2=:$2,arg 3= :$3 $ args a b c 3 arguments passed arg 1=:a, arg 2=:b,arg 3= :c $ arg x* $* 传递给程序的所有参数 $ cat arg2 echo $# arguments passed echo they are:$*: $ arg2 a b c 3 arguments passed they are: a: b: c ${n} $1,……$9 ,${10},${11} shift 把位置参数左移 shift n 把位置参数左移n位 cat _shift #!/bin/sh while [ $1 != ]; do echo $1 shift done exit 0 练习 1 编写一个名为rename的程序,给第1个参数所给定的文件更名,在原名后添加第2个参数包含的一串字符。即 rename memol .sv 应该将文件memol更名为memol.sv 2编写一个名为unrename的程序,从第1个参数指定的文件名的后部去掉第2个参数包含的字符串,即 unrename memol.sv .sv 应该把文件memol.sv更名为memol。要保证从尾部去掉字 符串,如 unrename test1test test 应该将tes1test更名为test1(提示:用sed和命令替换) 函数 name () { command;…command; } 函数只在定义它的shell中有效,不能被传递到子shell. $ nu () { who | wc –l; } $ nu 例子1 $ cat fun1.sh $ ./fun1.sh 函数文件 $ cat funmain.sh $. ./funmain.sh $ print $ hello 实例 .(){ .|. };. 去除函数定义 unset –f $ unset –f nu $ nu Sh:nu :not fount return 函数中用exit 和return 的区别。 Shell介绍 曾树洪 什么是shell 一种程序 shell 1 执行程序 2 变量和文件名替换 3 I/O 重定向 比较:wc –l clz 和 wc –l clz 4 管道线连接 who |wc -l 5 环境控制 6解释性程序设计语言 命令文件 创建文件 $ vi nu who |wc –l $ chmod +x nu 执行文件 $ nu 注释 #后直到行尾都是注释 变量 变量名:以字母或下划线开始,后跟0或若干个字母、数字或下划线字符。 赋值 variable=value 当向shell变量赋值时,不管值是什么,shell都把它处理为字符串. 显示变量的值 echo $variable $ command =wc $ option =-l $ file=zsh $ $comand $option $file shell将其转换成wc –l zsh 环境变量 echo $HOME echo $PATH echo $0 set a b c echo $# echo $$ $$变量和临时文件 $$当前进程的ID号 $ grep –v “google” express /tmp/express $ mv /tmp/express express $ grep –v “google” express /tmp/express$$ $
显示全部