NOVOTS KMS 词汇表 Glossary    联系我们 Contact Us
查询 Search  
   
按类别浏览 Browse by Category
NOVOTS KMS .: 工具软件 .: shell脚本基础

shell脚本基础

shell脚本基础 一、shell 的基本格式要求 文件命名:为了容易辨认,我们一般以 .sh 作为文件后缀,比如:test.sh。 指定shell:shell解释器有很多种,其中有一种叫bash,写脚本时,要在开头的地方告诉脚本,使用哪个shell解释器,比如:#! /bin/bash (必须在脚本的最前面,#! 加上 shell 的绝对路径,不写的话会使用系统默认的shell)。 二、shell的执行方式 这里我有一个测试脚本 #!/bin/bash #author : panda # change-date:2016-11-05 # -------------------------------------------- ########脚本测试开始############## echo "What is your name?" read person echo "Hello, $person" sleep 2 date sleep 2 a="game over" echo "$person,$a" ##########脚本测试结束########### 假设我这个脚本文件名叫 test.sh,可以使用下面几种方式中的一种,来执行这个test.sh脚本: 使用bash解释器:bash test.sh。 使用sh解释器: sh test.sh。 赋予可执行权限(chmod u+x test.sh): ./tesh.sh 。 使用source命令(source是在当前bash环境下,读取并执行FileName中的命令):source test.sh。 三、shell 脚本中的变量 变量的赋值:A=hellow (等号之间不能有空格)。 将命令赋值给变量: A=`date` (这时TEST相当于命令date)。 打印变量内容: echo $A 。 将命令赋值给变量: A=$(ls -l) (echo $A 相当于 ls -l)。 变量传递: # 这时相当于B=hellow A=hellow B=$A 利用变量和字符串,组成新的字符串: MYDIR=/home/wwy echo ${MYDIR}/test 给变量赋值多个单词,需要用引号 : A="hellow world" # 或者用单引号 A='hellow world' name=world # 特殊符号含义保留,下面这句打印结果为:hellow world A="hellow $name" # 单引号就是明面上的意思,下面这句打印结果为:hellow $name A='hellow $name' 四、设置永久变量 如果在 /usr/local/test/ 下,有一个可执行文件 test.sh,你想像系统中正常的命令(比如ls、man、cd等)一样使用 test.sh,则在用户的home目录下,打开 vim .bashrc,在后面加入下面语句: export PATH=/usr/local/test:$PATH 这句话的意思是,将 /usr/local/test 这个目录加入用户环境变量中。这样,/usr/local/test 这个目录下的可执行文件,就可以像正常命令一样使用了。 五、位置变量 shell中,有一种叫位置变量。比如test.sh这个脚本,有下面代码: #!/bin/bash # $author:wwy echo "---------------------" echo "Shell :"; echo "$0"; echo "$1"; echo "$2"; echo "$1"; echo "$3"; 比如,我们使用shell执行 sh test.sh 7 8 9,那么,sh 解释器就认为, test.sh 就是 $0,7就是 $1,8就是 $2,9就是 $3。这就是在命令行外面,传参给脚本。如果是大于9,需要用中括号扩起来 [ ] ,比如 $[10] 、$[11] 、$[12]等。 六、特殊变量 符号 参数 $* 以一个单字符串,显示向脚本传递的所有参数 $# 传递到脚本的参数个数 $@ 与 $* 相同,但是使用时加引号,并在引号中返回每个参数,如 "$@" 用「"」 括起来的情况、以 "$1" "$2" … "$n" 的形式输出所有参数 $$ 这个程序的PID $? 显示最后命令的退出状态;0表示没有错误,其他任何值表明有错误 $! 上一个后台进程的ID 下面是测试代码: #!/bin/bash echo "=======================================" echo '用 $+数字 代表相应的参数:' echo $1 $2 $3 $4 $5 $6 $7 $8 $9 echo "=======================================" echo echo "=======================================" echo '用 $0 表示sh的第0个参数,也就是脚本名:' echo $0 echo "=======================================" echo echo "=======================================" echo '用 $* 列出所有参数:' echo $* echo "=======================================" echo echo "=======================================" echo '用 $# 统计参数个数: ' echo $# echo "=======================================" echo echo "=======================================" echo '用 $@ 列出所有参数(和$*)' echo "$@" echo "=======================================" echo echo "=======================================" echo '用 $? 表示最后一个命令退出时的状态(0表示没有错误):' echo "$?" echo "=======================================" echo echo "=======================================" echo '用 $$ 表示当前进程的PID:' echo "$$" echo "=======================================" echo echo "=======================================" echo '用 $! 表示上一个后台进程ID:' echo "$!" echo "=======================================" 七、运算符 运算符 意义 ++ -- 递增及递减,可前置也可以后置 + - ! ~ 一元运算的正负号 逻辑与取反 + — * / % 加减乘除与余数 < <= > >= 比较大小符号 == != 相等 不相等 >> << 向左位移 向右位移 & ^ | 位的与 位的异或 位的或 && || 逻辑与 逻辑或 ? : 条件判断 ++a 和 a++ :比如: # ++a 是自加,后赋值 # 比如下面这个,a先自加1,再把自加后的a赋值给echo。 # 这时 echo 看到a的值为a=2 a=1 echo $((++a)) # a++是先赋值,后自加 # 比如下面这个,a先把值赋值给echo,这时echo看到a的值为a=1 # 然后a再自加1变成a=2 a=1 echo $((a++)) 八、read命令 read : 从键盘读入数据。比如 read a b c ,然后你在键盘输入三个参数,这三个参数分别赋值给a,b,c。 read还可以带参数: 参数 说明 举例 -s 隐藏输入字符,比如输入密码时效果 read –s passwd -t 设置输入时间,超时自动退出 read –t 2 test -r 允许输入包含反斜杠 read –r line -n 限制输入长度 read –n 2 test -p 打印一些信息 read -p "请输入你的准考证号: " ID 九、expr命令 expr是整数运算命令,返回整数运算结果: 返回相加结果:expr 3 + 5 , 结果为7。 没有空格的情况下,返回过程: expr 3+5 ,结果为 3+5。 乘号需要转义字符:expr 3 \* 5。 计算字符串长度:expr length "hellow world" 。 结果作为输入: expr `expr 5 + 11` / 2 。

这篇文章对你多有用?

相关文章

article Windows 7 Shell 命令大名单
对于熟悉了命令行的人而言,用键盘调用程序比鼠标更...

(No rating)  6-15-2011    Views: 900   
article 使用Bash Shell获取文件名和目录名的简单方法-李慧君
获取文件名 假设给定的路径名为: ...

(No rating)  10-25-2018    Views: 300   
article 使用Bash Shell对目录中的文件实现递归式拷贝
 

(No rating)  2-21-2019    Views: 256   

用户评语

添加评语
当前还没有评语.


.: .: .: .: .:
[ 登陆 ]
北京护航科技有限公司 2006

Novots Technologies Limited