Linux命令之2-结构话命令

Linux命令2

入门级,个人历史学习笔记整理分享存档,错误请指教


使用结构话命令

对脚本中命令执行的顺序施加一些逻辑流程控制,被称为结构化命令。

1. if-then
if command     # 如果该命令执行成功,则执行then后面的语句,否则退出
then           # 如果command 命令执行成功,会返回状态码0,就会执行 then的语句  
	commands
fi
-----------------------------------------------------------------------------
if command     # 如果该命令执行成功,则执行then后面的语句,否则 执行else 后面的语句
then
	commands
else
	commands
fi

如果你在用其他的编程语言的if-then语句,这种形式可能会让你有点困惑。在其他编程语言中,if语句之后的对象是一个等式。这个等式的求值结果为True或False。 但 bash shell 的if语句并不是这么做的。

bash shell 的 if 语句会运行 if 后面的命令。
在这里插入图片描述

if command1          #嵌套语句
then
	commands
elif command2        #elif
then 
	commands
else
	commands
fi
2. test 命令
在上面中  if 语句中都是shell命令,那么 if-then 能否测试命令退出状态吗之外的条件:
  比如: 3>2      答案:  不能
这时候可以使用test命令  test condition
condition 是test命令要测试的一系列参数和值
if test 4 -gt 3
then
	command
fi

在这里插入图片描述

除了test之外,bash shell还有另一种条件测试方法:
if [ condition ]   #方括号中定义 测试条件  注意:第一个方括号之后和第二个方括号之前必须加一个空格
then
	commands
fi

在这里插入图片描述

test 和 [] 命令可以判断三类条件:
1. 数值比较
2. 字符串比较
3. 文件比较

1. 数值比较      只能处理整数
比较描述
n1 -eq n2检查n1是否与n2 相等
n1 -ge n2检查n1是否 大于或等于 n2
n1 -gt n2检查n1是否 大于 n2
n1 -le n2检查n1是否 小于或等于 n2
n1 -lt n2检查n1是否 小于 n2
n1 -ne n2检查n1是否 不等于 n2
2. 字符串比较
     大于号(>) 和 小于号(<)必须转义,否则 shell会把他们重定向符号。
     大于和小于的顺序 和 sort命令所采用的不同。
     在这里,大写字母被认为小于小写字母的。但sort 命令刚好相反,这是因为排序规则不同。
比较描述
str1 = str2检查 str1 是否与 str2 相同
str1 != str2检查 str1 是否与 str2 不同
str1 \ < str2检查 str1 是否比 str2 小
str1 \ > str2检查 str1 是否比 str2 大
-n str1检查 str1 长度是否 非0
-z str1检查 str1 长度是否 为0
3. 文件比较 
   使用比较多的一部分,它允许你测试Linux文件系统上 文件和目录的状态。
比较描述
-d file检查file是否存在并是一个目录
-e file检查file是否存在
-f file检查file是否存在并是一个文件
-r file (read)检查file是否存在并可读
-s file检查file是否存在并非空
-w file检查file是否存在并可写
-x file检查file是否存在并可执行
-O file检查file是否存在并属当前用户所有
-G file检查file是否存在并且默认组与当前用户相同
file1 -nt file2 (newer than)检查 file 是否比 file2 新
file1 -ot file2 (older than)检查 file 是否比 file2 旧
3. 符合条件测试
[ condition1 ] && [ condition2 ]     与    两个条件都满足
[ condition1 ] || [ condition2 ]     或    满足其中之一即可 
4. if-then 的高级特性
1. 使用 双括号   ((  ))
   可以使用很多数学运算符
   /**先不了解 ,之后再补充**/
2. 使用 双方括号 [[ ]]   ----模式匹配
   if [[ $a == r* ]]
   then
   	  echo "hello $a"
   else
      echo "Sorry,I do not know you"
   fi

5. case 命令
类似于java的 Switch  case 语句
java:
switch(A)
{
  case 1:System.out.print(a); break;
  case 2:System.out.print(b); break;
  default:System.out.print(c); break;
}
shell:
case $user in
rich | barbara)             # | 表示匹配多个条件 即 $user = rich 或 $user = barbara
	echo "111111"
	echo "222222";;
testing)
	echo "333333";;
*)                          # * 表示匹配所有与 已知模式 都不匹配的值
	echo "444444";;
esac

更多结构化命令(for while until)
1. for命令
bash shell 提供了for命令,允许你创建一个遍历一系列值的循环。
基本格式:
for var in list     #再list中你需要迭代中要用到的一系列值
do
	commamds        #在 commands中   $var变量也是不断迭代的list中的值
done

在这里插入图片描述

2. 。。。。更多待整理补充

– END –


  • 备注

find . -name “*.txt” -type f -print -exec rm -rf {} ; 删除 录下包括子目录 下的某个文件

find . -name “.DS_Store” -type f -print -exec rm -rf {} ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值