linux bash善用判断式
1.利用 test 指令的测试功能
$ test -e hello.sh && echo "ok" || echo "no"
ok
2.首先,判断一下,让使用者输入一个文件名,我们判断:
- 这个文件是否存在,若不存在则给予一个“Filename does not exist”的讯息,并中断程序;
 - 若这个文件存在,则判断他是个文件或目录,结果输出“Filename is regular file”或 “Filename is directory”
 - 判断一下,执行者的身份对这个文件或目录所拥有的权限,并输出权限数据!
 
#!/bin/bash
#Program
# use input filename, program will check the flowing:
# )exist? )file/directory? )file permission
#Histroy:
#// lzyer First release
echo "please input filename, i will check sth."
read -p "input filename: " filename
#.
test -z ${filename} && echo "You MUST input filename" && exit
#
test ! -e ${filename} && echo "the filename '${filename}' DO NOT exist " && exit
#
test -f ${filename} && filetype="file"
test -d ${filename} && filetype="directory"
test -r ${filename} && perm="readable"
test -w ${filename} && perm="${perm} writeable"
test -x ${filename} && perm="${perm} executable"
echo "the filename:${filename} is ${filetype}"
echo "and permission for you are :${perm}"
3.利用判断符号 [ ]
[  "$HOME"  ==  "$MAIL"  ]
[□"$HOME"□==□"$MAIL"□]
 ↑       ↑  ↑       ↑
案例设置如下:
- 当执行一个程序的时候,这个程序会让使用者选择 Y 或 N ,
 - 如果使用者输入 Y 或 y 时,就显示“ OK, continue ”
 - 如果使用者输入 n 或 N 时,就显示“ Oh, interrupt !”
 - 如果不是 Y/y/N/n 之内的其他字符,就显示“ I don't know what your choice is ”
 
#!/bin/bash
#Program:
# This program shows "Hello World!" in your screen.
#History:
# // lzyer First release
read -p "Please input (Y/N)? " yn
[ "${yn}" == "Y" -o "${yn}" == "y" ] && echo "ok, continue " && exit
[ "${yn}" == "N" -o "${yn}" == "n" ] && echo "oh, interrupt "&& exit
echo "i don't know what you choice is " && exit
4.Shell script 的默认变量($0, $1...)
- $# :代表后接的参数“个数”,以上表为例这里显示为“ 4 ”;
 - $@ :代表“ "$1" "$2" "$3" "$4" ”之意,每个变量是独立的(用双引号括起来);
 - $* :代表“ "$1<u>c</u>$2<u>c</u>$3<u>c</u>$4" ”,其中 <u>c</u> 为分隔字符,默认为空白键,
 
- 程序的文件名为何?
 - 共有几个参数?
 - 若参数的个数小于 2 则告知使用者参数数量太少
 - 全部的参数内容为何?
 - 第一个参数为何?
 - 第二个参数为何
 
#!/bin/bash
#Program
# program show the script name,parameters
#Histroy
# // lzyer First release
echo "the script name is ==> ${0}"
echo "Total paramter number is ==> $#"
[ "$#" -lt ] && echo "the number of parameters is less than 2.STOP here" && exit
echo "your whole parameter is ==> '$@'"
echo "The 1st parameter ${1}"
echo "The 2nd parameter ${2}"
5.shift:造成参数变量号码偏移
#!/bin/bash
#Program:
# program show the effect of shift function.
#History:
#// lzyer First release
echo "Total parameter number is $#"
echo "your whole parameter is $@"
shift
echo "Total parameter number is $#"
echo "your whole parameter is $@"
shift
echo "Total parameter number is $#"
echo "your whole parameter is $@"
linux bash善用判断式的更多相关文章
- Linux学习-善用判断式
		
利用 test 指令的测试功能 要检测系统上面某些文件或者是相关的属性时,利用 test 这个指令来工作真是好用得不 得了, 举例来说,我要检查 /dmtsai 是否存在时,使用: [dmtsai@s ...
 - Linux学习十八之、善用判断式
		
原文地址:http://vbird.dic.ksu.edu.tw/linux_basic/0340bashshell-scripts_3.php 善用判断式 在第十一章中,我们提到过 $? 这个变量所 ...
 - 第十三章、学习 Shell Scripts 善用判断式
		
善用判断式 利用 test 命令的测试功能 我要检查 /dmtsai 是否存在时,使用: [root@www ~]# test -e /dmtsai [root@www ~]# test -e /dm ...
 - linux bash shell 判断目录是否为空的函数
		
#!/bin/sh ##方法一 判断输出字符数统计为0 is_empty_dir(){ |wc -w` } ##方法二 判断输出string为空 #is_empty_dir(){ # ` ] #} t ...
 - Linux中的判断式
		
格式一:test [参数] 判断内容格式二:[ [参数] 判断内容 ] 说明: a.格式二可以认为是格式一的缩写 b.格式二里中括号和内容之间要有空格 基于文件的判断-d 判断文件是否存在,并且是目录 ...
 - 第十三章、学习 Shell Scripts  条件判断式
		
利用 if .... then 单层.简单条件判断式 if [ 条件判断式 ]; then 当条件判断式成立时,可以进行的命令工作内容: fi <==将 if 反过来写,就成为 fi !结束 i ...
 - Linux if 命令判断条件总结
		
Linux if 命令判断条件总结Linux if命令 关于文件属性的判断式 -a 如果文件存在 -b 如果文件存在,且该文件是区域设备文件 -c 当file存在并且是字符设备文件时返回真 -d 当p ...
 - Linux Bash Script conditions
		
Linux Bash Script conditions shell 编程之条件判断 条件判断式语句.单分支 if 语句.双分支 if 语句.多分支 if 语句.case 语句 refs http:/ ...
 - 【重点】Shell入门教程:流程控制(3)条件判断式的真假值
		
之前曾提到,在Bash中什么是真什么是假,是以命令的结束状态是否为0来做判断.传回0,即为真:传回非0,即为假. 在Bash中,这种可以影响程序流程的式子,称为条件判断式.判断式的操作数分成“单元”及 ...
 
随机推荐
- 8.1 编写USB鼠标驱动程序,并测试
			
学习目标:编写USB鼠标驱动程序,并测试(将USB鼠标的左键当作L按键,将USB鼠标的右键当作S按键,中键当作回车按键). 一.怎么写USB设备驱动程序?步骤如下: 1. 首先先定义全局变量usb_d ...
 - struts2架构网站漏洞修复详情与利用漏洞修复方案
			
struts2从开发出来到现在,很多互联网企业,公司,平台都在使用apache struts2系统来开发网站,以及应用系统,这几年来因为使用较多,被攻击者挖掘出来的struts2漏洞也越来越,从最一开 ...
 - Leecode刷题之旅-C语言/python-9.回文数
			
/* * @lc app=leetcode.cn id=9 lang=c * * [9] 回文数 * * https://leetcode-cn.com/problems/palindrome-num ...
 - 工作中使用的linux命令汇总
			
ln -s /usr/local/tomcat/ ./tomcat 创建软连接到/usr/local/tomcat tar -zxvf apache-kylin-2.4.0-bin-hbase1 ...
 - Verilog学习笔记基本语法篇(七)········ 生成块
			
生成块可以动态的生成Verilog代码.可以用于对矢量中的多个位进行重复操作.多个模块的实例引用的重复操作.根据参数确定程序中是否包含某段代码.生成语句可以控制变量的声明.任务和函数的调用.还能对实例 ...
 - 通过py2exe打包python程序的过程中,解决的一系列问题
			
py2exe的使用方法参考<py2exe使用方法>. 注:程序可以在解释器中正常运行,一切问题都出在打包过程中. 问题1: 现象:RuntimeError: maximum recursi ...
 - HMM相关文章索引
			
HMM相关文章索引 1条回复 HMM系列文章是52nlp上访问量较高的一批文章,这里做个索引,方便大家参考. HMM学习 HMM学习最佳范例一:介绍 HMM学习最佳范例二:生成模式 HMM学习最佳范例 ...
 - ibdata1文件损坏时恢复InnoDB单表测试
			
Preface ibdata1 file is a shared system tablespace of innodb engine.Although we always set v ...
 - jmeter+ant的使用
			
1.安装ant 下载ant,解压到某盘 2.配置环境变量: 变量名称 变量值 备注 ANT_HOME F:\apache-ant-1.10.3 Ant的解压路径 Path %ANT_HOME%\bin ...
 - LuffyCity-CMDB实战
			
第1章 章节一 课时01-ITIL介绍 课时02-CMDB介绍 课时03-CMDB需求讨论 课时04-CMDB需求讨论2 课时05-CMDB表结构设计 课时06-CMDB表结构设计2 课时07-CMD ...