shell 判断式
2015-11-06 12:43
615 查看
1.利用test命令的测试功能
说明: -z参数表示字符串是否为空
2.利用判断符号[]
中括号用在很多地方,包括通配符与正则表达式,所以在bash语法中使用中括号作为shell的判断式时,注意中括号的两端需要有空格符来分隔。
在中括号内的每个组件都需要有空格键来分隔;
在中括号内的变量,最好都以双引号括号起来;
在中括号内的常量,最好都以但引号或双引号括号起来。
说明:其中-o表示或的意思。
注意:因为ubuntu默认的sh是连接到dash的,又因为dash跟bash的不兼容所以出错了.执行时可以把sh换成bash文件名.sh来执行.成功.dash是什么东西,查了一下,应该也是一种shell,貌似用户对它的诟病颇多.3
3.shell的默认变量
我们知道一个c++执行文件在运行时可以带参数,例如:./task p1 p2
同样的,脚本文件也可以带参数,且参数已经设置好变量名称了。
此外,还有一些特殊的变量可以在script内使用这些参数。
$#:代表后接的参数“个数”
$@:代表“$1”,"$2","$3","$4"之意,每个变量是独立的
$*:代表““$1c$2c$3c$4c””,其中c为分隔符,默认为空格键,
shift:参数变量号码偏移
#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH echo "\nPlease input a filename,I will check the filename's type and permission.\n" read -p "Input a filename: " filename test -z $filename && echo "You must input a filename." && exit 0 test ! -e $filename && echo "Filename does not exist" && exit 0 test -f $filename && filetype="regulare file" test -d $filename && filetype="directory" test -r $filename && perm="readable" test -w $filename && perm="$perm writable" test -x $filename && perm="$perm executable" echo "The filename: $filename is a $filetype" echo "And the permissions are : $perm"
说明: -z参数表示字符串是否为空
2.利用判断符号[]
中括号用在很多地方,包括通配符与正则表达式,所以在bash语法中使用中括号作为shell的判断式时,注意中括号的两端需要有空格符来分隔。
[空格"$HOME"空格==空格“$MAIL”空格]
在中括号内的每个组件都需要有空格键来分隔;
在中括号内的变量,最好都以双引号括号起来;
在中括号内的常量,最好都以但引号或双引号括号起来。
#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH read -p "Please input (Y/N): " input [ "$input" == "Y" -o "$input" == "y" ] && echo "OK,continue " && exit 0 [ "$input" == "N" -o "$input" == "n" ] && echo "Oh,interrupt!" && exit 0 echo "I don't know what your choice is" && exit 0
说明:其中-o表示或的意思。
注意:因为ubuntu默认的sh是连接到dash的,又因为dash跟bash的不兼容所以出错了.执行时可以把sh换成bash文件名.sh来执行.成功.dash是什么东西,查了一下,应该也是一种shell,貌似用户对它的诟病颇多.3
3.shell的默认变量
我们知道一个c++执行文件在运行时可以带参数,例如:./task p1 p2
同样的,脚本文件也可以带参数,且参数已经设置好变量名称了。
/path/to/scriptname opt1 opt2 opt3 opt4 $0 $1 $2 $3 $4
此外,还有一些特殊的变量可以在script内使用这些参数。
$#:代表后接的参数“个数”
$@:代表“$1”,"$2","$3","$4"之意,每个变量是独立的
$*:代表““$1c$2c$3c$4c””,其中c为分隔符,默认为空格键,
#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH echo "The script name is : $0" echo "Total parameter number is : $#" [ "$#" -lt 2 ] && echo "The number of parameter is less than 2." && exit 0; echo "Your whole parameter is : '$@'" echo "The 1st parameter is: $1" echo "The 2st parameter is: $2"
shift:参数变量号码偏移
#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH echo "Total parameter number is : $#" echo "Your whole parameter is : '$@'" shift #一个变量的偏移 echo "Total parameter number is : $#" echo "Your whole parameter is : '$@'" shift 3 #三个变量的偏移 echo "Total parameter number is : $#" echo "Your whole parameter is : '$@'"
相关文章推荐
- Mac环境下如何安装iTerm2并配置Z-Shell
- shell编程-进入某个目录将目录下面的文件名存入数组
- bash脚本自动部署war包到tomcat和切换nginx代理
- shell上线脚本
- Xshell 清除历史记录方法
- 简单shell
- Linux shell for循环语法
- shell脚本:一键优化centos系统
- Linux shell的实现——execvp
- git bash 本地项目上传
- Linux Shell 脚本编程入门教程
- linux:shell 编程 条件判断 以及 判断条件
- Linux程序设计 读笔2 Shell脚本
- shell学习之一: 变量,数组,判断,循环,函数
- .bash_profile和.bashrc的区别(如何设置生效)
- Deep Learning in a Nutshell: Core Concepts
- SSH远程管理、参数讲解、xshell使用、scp,sftp,ssh命令(ssh两种方式的密钥验证方
- 【转】Shell编程
- 使用shell脚本删除当前目录下.c文件对应的可执行文件
- linux:~/.bash_history ,~/.bash_logout,/etc/issue,/etc/issue.net,/etc/motd