linux学习日记十 学习shell script |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
本文标签:shell,script 其实,shell script就是利用shell的功能缩写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与命令(含外部命令)写在里面,搭配正则表达式、管道命令与数据流重导向等功能,达到我们想要的目的 。 bash的两种不同的执行方式的区别: # source sh02.sh 这种方式下shell脚本在父进程中执行,公用一个shell环境,变量也公用,所有配置文件比如'/.bashrc改完了可以用source '/.bashrc来更新而不用注销系统 。 # sh sh02.sh 这种方式下,sh02.sh在子进程中执行,其变量对于父进程不可见,父进程中的变量对子进程也不可见,但可以用export将变量变成环境变量后通用 。 ====利用test做判断====
还可以利用[]来进行判断 。不过要注意的是: 1,在中括号[]内每个组件都要有空格键分割 2,在中括号中的变量,最好用双引号括起来(变量定义的时候不要) 3,中括号中的常量,最好以单引号或双引号括起来 ====shell script的默认变量($0,$1 …) /path/to/scriptname opt1 opt2 opt3 opt4 $0 $1 $2 $3 $4 这样够清楚了吧 。 除了这些数字变量外,还有几个特殊的: * $#:代表后接的参数“个数” * $@:代表“$1”、“$2”、“$3”、“$4”之意,每个变量都是独立的(用双引号括起来) * $*:代表“ “$1c$2c$3c$4c” ”,其中c为分割字符,默认为空格,所以本例中代表“ “$1 $2 $3 $4″ ” ====条件判断式if…then…fi 典型例子: 复制代码 代码如下:if [ "$yn" == "Y" ] || [ "yn" == "y" ]; then echo "OK" exit 0 fi ====利用case…esac来判断==== case $变量名称 in <==关键词为 case ,还有变量前的$符号 "第一个常量值") <==每个常量值可以用双引号括起来,注意最右边的 ) 程式段 ;; <==两个分号,你懂的 "第二個变量內容") 程式段 ;; *) <==最后一个用 * 來代表所有其他值 默认执行语句 exit 1 ;; esac <==最終的 case 結尾!『反过来了』思考一下!
====函数function====
function fname() { ... }
注意:
function也是拥有内置变量的,$0代表函数名称,$1代表后续的第一个参数,以此类推 。注意跟shell script的内置变量区别
====不定循环while、until====
while [ condition ] <==条件成立时一直做,直到条件不成立就退出
do
程序段
done
until [ condition ] <== 条件不成立时一直做,直到条件成立就退出,这个跟while刚好相反
do
程序段
done
=====固定循环for====
另外一种形式:
====shell script的追踪和调试====
|