zoukankan      html  css  js  c++  java
  • 变量及判断

    1、位置变量
    
    	 $$	    		返回程序的PID
    	 $0	    		代表脚本本身名
    	 $1         代表脚本运行时接的第一个参数(常用) 
    	 $2         代表脚本运行时接的第二个参数
    	 $3         代表脚本运行时接的第三个参数
    	 $*         代表所有参数
    	 $@         也是代表所有参数
    	 $#         显示后面接的参数的个数
    	 $?					上一条命令执行成功则返回0,失败则返回非0 (常用)
    
    
    2、变量运算
    	常用的数值计算命令:
    	(())、let、expr、bc、$[]
    	
    	# a=100
    	# b=200
    	# c=$(($a+$b))			--算术运算,只能计算整数,二个括号,不能少
    	# c=$[$a+$b]			--算术运算,只能计算整数
    	# let c=a+b				--算术运算,只能计算整数	
    	# expr $a + $b			--算术运算,只能计算整数	,注意格式,等号两侧有空格
    
    	# a=3.14
    	# b=1.23
    	# echo "$a+$b" | bc		--算术运算,整数小数都能计算,bc是一个计算器
    	4.37	
    	
    	bc是一个计算器
    	# bc
    
    	无论是整数还是小数都可以使用bc来计算,用 | 管道传入即可
    
    
    3、逻辑判断与顺序
    	;			--前面执行完,不管成功与否,都执行后面						没有逻辑关系
    	&&		--前面执行成功,才执行后面;前面执行失败,后边不执行				逻辑与
    	||		--前面执行失败,才执行后面;前面执行成功,后边不执行				逻辑或
    
    	;   &&   || 这些符号都是连接命令
    
    	--正确判断方法:
    	# ls /test/ && echo 'existed' || echo 'not existed'
    	--错误判断方法:
    	# ls /testfsdafas/ || echo 'existed' && echo 'not existed'
    
    
    
    二. 条件判断
    1. 条件判断语法
    	[语法]
    	格式1:test<测试表达式>								--不常用
    	例:test -f 1.txt && echo 1||echo 0
    	
    	
    	格式2:[<测试表达式>]									--常用
    	例:[ -f 1.txt ] && echo 1||echo 0
    	
    	
    	格式3:[[<测试表达式>]]								--不常用
    	例:[[ -f 1.txt ]] && echo 1||echo 0
    	
    2. 各种条件判断
    (1)文件存在和文件类型的判断
    
    	-e	是否存在(exist)  
    	-f	是否为普通文件
    	-d	是否为目录
    	-S	socket文件
    	-p	pipe 管理文件
    	-c	character字符文件
    	-b	block块文件
    	-L	软连接
    
    	# test -f 1.txt && echo 1||echo 0
    	1
    	# [ -f 1.txt ] && echo 1||echo 0		--注意表达式与[]前后各有一个空格
    	1
    	# [[ -f 1.txt ]] && echo 1||echo 0		--注意表达式与[]前后各有一个空格
    	1
    	# [[ ! -f 1.txt ]] && echo 1||echo 0
    	0
    
    	输入一个文件,判断它属于哪种类型
    	#!/bin/bash
    
    	read -p "请输入一个文件名:" filename
    
    	[ -e $filename ] || echo "文件不存在"
    	[ -f $filename ] && echo "${filename}是普通文件"
    	[ -d $filename ] && echo "${filename}是目录"
    	[ -S $filename ] && echo "${filename}是socket文件"
    	[ -p $filename ] && echo "${filename}是管道文件"
    	[ -c $filename ] && echo "${filename}是字符文件"
    	[ -b $filename ] && echo "${filename}是块文件"
    	[ -L $filename ] && echo "${filename}是软链接文件"
    
    	--------------------------------------------	
    
    	#!/bin/bash
    
    	[ -e $1 ] || echo "文件不存在"
    
    	[ -f $1 ] && echo "${1}是普通文件"
    	[ -d $1 ] && echo "${1}是目录"
    	[ -S $1 ] && echo "${1}是socket文件"
    	[ -p $1 ] && echo "${1}是管道文件"
    	[ -c $1 ] && echo "${1}是字符文件"
    	[ -b $1 ] && echo "${1}是块文件"
    	[ -L $1 ] && echo "${1}是软链接文件"
    
    
    
    (2)文件权限相关的判断
    
    	-r	当前用户对其是否可读		--对于普通用户有效,root用户不准确(rw不准)
    	-w	当前用户对其是否可写
    	-x	当前用户对其是否可执行	--常用
    	-u	是否有suid
    	-g	是否sgid
    	-k	是否有t位
    	-s    是否为空白文件		--不为空是真,为空是假
    
    	#!/bin/sh
    
    	[ -e $1 ] || echo "文件不存在" 
    
    	[ -x $1 ] && sh $1 || echo "没有执行权限"
    
    (3)两个文件的比较判断
    
    	file1 -nt  file2	比较file1是否比file2新	(new than)
    	file1 -ot  file2 	比较file1是否比file2旧	(old than)
    	file1 -ef  file2	比较是否为同一个文件
    
    
    (4)整数之间的判断
    	-eq	相等	 
    	-ne	不等	
    	-gt	大于	
    	-lt	小于
    	-ge 	大于等于
    	-le	小于等于	
    
    (5)字符串之间的判断
    	-z  	是否为空字符串			--判断变量是否为空
    	-n		是否为非空字符串
    	string1 = string2 是否相等
    	string1 != string2 不等
    
    	# a=
    	# [ -z $a ] && echo 1 || echo 0
    	1
    	# a=1
    	# [ -z $a ] && echo 1 || echo 0
    	0
    
    
    (6)逻辑判断
    	-a      两个条件同时满足,才为true
    	-o      两者满足其一,就为true
    	!	   非
    	
    
    (7) 判断的三种格式的区别
    	在(())中使用(算术运算) 		在[]和[[]]中使用(算术运算)			说明
    	==					 	 -eq					equal,等于
    	!=					 	 -ne					not equal,不等于
    	>					 	 -gt					greater than,大于
    	>=						 -ge					greater equal,大于等于
    	<					 	 -lt					less than,小于
    	<=						 -le					less equal,小于等于
    
    	在[]中使用的逻辑操作符	在[[]]中使用的逻辑操作符					说明
    	-a					&&							与
    	-o					||							或
    	!					!							非
    
    	# [ -e install.log -a -f install.log ] && cat install.log || echo "文件不存在"
    	# [ -e 1.sh -a -x 1.sh ] && ./1.sh || echo "文件不存在或者文件没有执行权限"
    	# [[ -e 1.sh && -x 1.sh ]] && ./1.sh || echo "文件不存在或者文件没有执行权限"
    
    
    3. 分支结构
    (1)单分支结构
    	
    	
    	
    	if condition(条件,真或假)
    	then						--要么单独一行,要么在if后面,要加一个分号
    		statement
    	fi
    	或
    	
    	
    	
    	if condition;then
    		statement
    	fi
    
    	if(如果/假设) 条件(真/假)			--条件为真时,就执行代码
    	then(那么)
     		代码;
    	fi
    
    (2)双分支结构
    	if  condition(条件,真或假)
    		then
    			statement		--条件为真,执行的部分
    	else
    		statement	--条件为假,执行的部分
    	fi
    	
    	
    
    (3)多分支结构
    	if  condition(条件,真或假)
    	then
    		statement
    	elif  condition
    		then
    		statement
    	elif  condition
    		then
    		statement
    	else
    		statement
    	fi
    
        输入一个文件,判断是否存在,以及文件类型
    
    	#!/bin/bash
    
    	[ -e $1 ] && echo "文件存在" || echo "文件不存在"
    
    	[ -f $1 ] && echo "${1}是普通文件"
    	[ -d $1 ] && echo "${1}是目录"
    	[ -S $1 ] && echo "${1}是socket文件"
    	[ -p $1 ] && echo "${1}是管道文件"
    	[ -c $1 ] && echo "${1}是字符文件"
    	[ -b $1 ] && echo "${1}是块文件"
    	[ -L $1 ] && echo "${1}是软链接文件"
    	-----------------------------
    	
    	输入一个文件判断文件类型 if的单分支:
    
    	#!/bin/bash
    	if [ -e $1 ];then
            echo "文件存在"
    	fi
    	
    	# 用逻辑操作符来判断文件不存在
    	if [ ! -e $1 ];then
    		    echo "文件不存在"
    	fi
    	
    	# 判断文件类型
    	if [ -f $1 ];then
    		    echo "$1是普通文件"
    	fi
    
    	if [ -d $1 ];then
    		    echo "$1是目录文件"
    	fi
    
    	if [ -S $1 ];then
    		    echo "$1是socket文件"
    	fi
    
    	if [ -p $1 ];then
    		    echo "$1是管道文件"
    	fi
    
    	if [ -c $1 ];then
    		    echo "$1是字符文件"
    	fi
    
    	if [ -b $1 ];then
    		    echo "$1是块文件"
    	fi
    
    	if [ -L $1 ];then
    		    echo "$1是链接文件"
    	fi
    	----------------------------
    	双分支和多分支
    	# 判断文件是否存在
    	#!/bin/bash
    	# 判断文件是否存在
    	if [ -e $1 ]
    	then
    		    echo "文件存在" 
    	else
    		    echo "文件不存在"
    	fi
    
    	# 判断文件类型
    	if [ -f $1 ];then
    		    echo "${1}是普通文件"
    	elif [ -d $1 ];then
    		    echo "${1}是目录"       
    	elif [ -S $1 ];then
    		    echo "${1}是socket文件"
    	elif [ -p $1 ];then
    		    echo "${1}是管道文件"
    	elif [ -c $1 ];then
    		    echo "${1}是字符文件"
    	elif [ -b $1 ];then
    		    echo "${1}是块文件"
    	else
    		    echo "${1}是软链接文件"
    	fi
    	-------------------------------------------
    	
    	如何判断一台主机是否在线? 
    	
    	#!/bin/bash
    
    	ping $1 -c 2 &> /dev/null
    
    	if (( $? == 0 )) ;then
    		    echo "$1在线"
    	else
    		    echo "$1不在线"
    	fi
    	-----------
    	#!/bin/bash
    
    	ping $1 -c 2 &> /dev/null
    
    	if [ $? -eq 0 ];then
    		echo "$1在线"
    	else
    		echo "$1不在线"
    	fi
    

      

      

  • 相关阅读:
    电子招投标应用系统连载(一)-开标系统
    js实现一个简单钟表动画(javascript+html5 canvas)
    ,net core mvc 文件上传
    echarts显示X轴最后一个lable
    C# 解压gzip文件(.tgz)
    【转】C#计算两坐标点距离
    用file标签实现多图文件上传预览
    c#数据批量插入
    Asp.net 中ViewState,cookie,session,application,cache的比较
    ASP.NET MVC从请求到响应发生了什么
  • 原文地址:https://www.cnblogs.com/The-day-of-the-wind/p/12064396.html
Copyright © 2011-2022 走看看