shell脚本常用文件判断命令

#! /bin/sh

#输出提示信息
echo "Please enter a number:"
#从键盘读取用户输入的数字
read num
#如果用户输入的数字大于10
if [ "$num" -gt 10 ]; then
#输出大于10的提示信息
echo "The number is greater than 10."
#否则
else
#输出小于或者等于10的提示信息
echo "The number is equal to or less than 10."
fi

 

 

-eq 等于,如:if [ "$a" -eq "$b" ] 
-ne 不等于,如:if [ "$a" -ne "$b" ] 
-gt 大于,如:if [ "$a" -gt "$b" ] 
-ge 大于等于,如:if [ "$a" -ge "$b" ] 
-lt 小于,如:if [ "$a" -lt "$b" ] 
-le 小于等于,如:if [ "$a" -le "$b" ] 
大于(需要双括号),如:(("$a" > "$b")) 
>= 大于等于(需要双括号),如:(("$a" >= "$b")) 
小数据比较可使用AWK 
字符串比较 
= 等于,如:if [ "$a" = "$b" ] 
== 等于,如:if [ "$a" == "$b" ],与=等价 

 

 

if [ $? -eq 0 ]该语句是什么含义?
$0: shell或shell脚本的名字
$*:以一对双引号给出参数列表
$@:将各个参数分别加双引号返回
$#:参数的个数
$_:代表上一个命令的最后一个参数
$$:代表所在命令的PID
$!:代表最后执行的后台命令的PID
$?:代表上一个命令执行后的退出状态

 

$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1是传递给该shell脚本的第一个参数
$2是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表

 

 
#!/bin/sh
#意if[]
if["$SHELL"="/bin/bash"];then
echo"yourloginshellisthebash\n"
echo"SHELLis:$SHELL"
else
echo"yourloginshellisnotbashbut$SHELL"
fi
#[-f"somefile"]:
#[-x"/bin/ls"]:/bin/ls
#{-n"$var"}:断$var
#["&a"="$b"]:断$a和$b
[-f"/etc/shadow"]&&echo"Thiscomputerusesshadowpasswords"
if[-f"/etc/shadow"];then
echo"使符"
else
echo"有"
fi
 
 

 

 

1、在中括号中,判断变量的值, 加不加双引号的问题?
-z 判断 变量的值,是否为空; zero = 0

- 变量的值,为空,返回0,为true
- 变量的值,非空,返回1,为false
-n 判断变量的值,是否为空 name = 名字
- 变量的值,为空,返回1,为false
- 变量的值,非空,返回0,为true
pid="123"
[ -z "$pid" ] 单对中括号变量必须要加双引号
[[ -z $pid ]] 双对括号,变量不用加双引号

[ -n "$pid" ] 单对中括号,变量必须要加双引号
[[ -z $pid ]] 双对中括号,变量不用加双引号
2、多个条件判断,[] 和 [[]] 的区别?
2.1:[[ ]] 双对中括号,是不能使用 -a 或者 -o的参数进行比较的;
&& 并且 || 或 -a 并且 -o 或者
[[ ]] 条件判断 && 并且 || 或


[[ 5 -lt 3 || 3 -gt 6 ]] 一个条件满足,就成立 或者的关系


[[ 5 -lt 3 ]] || [[3 -gt 6 ]] 写在外面也可以


&& 必须两个条件同时满足,和上述一样,这里想说明的问题的是:

[[ 5 -lt 3]] -o [[ 3 -gt 6 ]] [[ 5 -lt 3 -o 3 -gt 6 ]] 
[[ 5 -lt 3 -a 3 -gt 6 ]] [[ 5 -lt 3 -a 3 -gt 6 ]] 
-a 和 -o就不成立了,是因为,[[]] 双对中括号,不能使用 -o和 -a的参数
直接报错:

2.2 [ ] 可以使用 -a -o的参数,但是必须在 [ ] 中括号内,判断条件,例如:
[ 5 -lt 3 -o 3 -gt 2 ] 或者条件成立
[5 -lt 3 ] -o [ 3 -gt 2] 或者条件, 这个不成立,因为必须在中括号内判断

如果想在中括号外判断两个条件,必须用&& 和 || 比较
[5 -lt 3 ] || [ 3 -gt 2] 
[5 -gt 3 ] && [ 3 -gt 2] 成立

相对的,|| 和 && 不能在中括号内使用,只能在中括号外使用

 

posted on 2019-07-07 10:37  鑫春  阅读(2476)  评论(0编辑  收藏  举报

导航