首页 > 系统相关 >shell 编写脚本的一些细节心得:流程控制

shell 编写脚本的一些细节心得:流程控制

时间:2023-04-18 11:23:01浏览次数:34  
标签:shell 代码 echo 运算符 括号 while 编写 心得

流程控制用得最多的,无非也就是老三样,if、for、while。

if

其中 if 作为判断的函数使用,其中也是有很多小细节的。

例如你要判断两个值是否相等的时候,有两种方式,代码如下:

test=2

if ((${test}==2))
then 
echo "yes"
fi

if [ ${test} -eq 2 ]
then 
echo "yes"
fi

其实两段代码的效果是一样的,唯一不一样的是,书写规范不一样。


在括号的使用上遵循一下几个规则:

单括号:

  1. 单个 "[]" 中括号,那么里面是规定(posix)好的运算符与表达式的格式。括号中需要使用关系运算符、字符串运算符、逻辑运算符等,要求结果必须为 true 或者 false。
  2. 单个 "()" 圆括号里面内容的格式要求跟你正常使用 shell 命令是一样的,不能有多余的空格。括号中的内容会执行,要求返回 true 或者 false。意味着支持更多的表达式类型。

双括号:

如果是双括号,那么则是对单方括号的扩展,支持的运算符更多,但不同的 shell 之间可能产生兼容性的问题。如果需要跨发行版 / 平台使用,不建议使用这个方法。
方括号与圆括号的区别,目前仅发现格式要求不一样,圆括号不能有空格,二方括号有更严谨的空格要求。

for

而 for 的使用则跟大多数编程语言一样,只不过细节上有点差异罢了。

例如轮询出本文件夹下的所有内容的代码如下:


for file in `ls -a`
do 
echo $file
done

这个代码相信大家接触过一些编程的应该都可以看懂。

当for循环没有条件的时候就会变成无限循环。

for (( ; ; )) ; echo yes

while

while 最适合用来处理需要一直执行下去的代码。

# while 不写条件的时候 默认为 while true
while :
do 
echo 1
sleep 1
done

标签:shell,代码,echo,运算符,括号,while,编写,心得
From: https://www.cnblogs.com/NagaResst/p/17328918.html

相关文章

  • imx6ul 编写中断程序步骤
    ①、启动文件start.s需要添加一级中断向量表和中断处理函数的框架两部分的内容。一级中断向量表如下:3_start:4ldrpc,=Reset_Handler/*复位中断*/5ldrpc,=Undefined_Handler/*未定义指令中断*/6ldrpc,=SVC_Handler/*SVC(Supervisor)中断*/7ldrpc,......
  • Shell脚本--重定向
    0.从终端输入一个命令时,通常会将该命令的结果输出到终端。例如,在终端执行 pwd 命令会在屏幕上显示当前目录:#pwd/root大多数UNIX系统中,命令通常从一个叫标准输入的地方读取输入。同样,命令通常将其输出写入到标准输出。标准输入和标准输出默认情况下都是终端。那如果想......
  • Shell脚本--变量
    1. 定义变量Shell 支持一下三种定义变量的方式:variable=valuevariable='value'variable="value"variable是变量名,value是赋给变量的值。如果value不包含任何空白符,那么可以不用引号;否则就必须使用引号。注意,赋值号=的周围不能有空格。Shell变量的命名规范和大......
  • shell正则之Grep
    1.shell正则之Grep通配符及特殊符号 正则表达式 ......
  • Shell之bash脚本的编写
    下面是我写的一段部署脚本。#!/bin/bashcontainerID=`dockerps|grepkapok-admin|awk'{print$1}'`dockerstop$containerIDecho"dockerstop$containerID"imageID=`dockerimages|grepkapok-admin|awk'{print$3}'`foridin$im......
  • shell编程学习笔记之特殊变量($0、$1、$2、 $?、 $# 、$@、 $*)
    特殊变量($0、$1、$2、$?、$#、$@、$*)shell编程中有一些特殊的变量可以使用。这些变量在脚本中可以作为全局变量来使用。名称说明$0脚本名称$1-9脚本执行时的参数1到参数9$?脚本的返回值$#脚本执行时,输入的参数的个数$@输入的参数的具体内容(将输入的参数作为......
  • How to execute a shell script in the .profiles file All In One
    Howtoexecuteashellscriptinthe.profilesfileAllInOnedemos$cat./dd-ip-notice-robot.sh#!/usr/bin/envbash#coding:utf8#自动发送树莓派ip地址,到钉钉上DD_ROBOT_TOKEN=404e996c8747ea4a1230f5cd5f7b2d36006f2732f9111bd3f39ce36d17fa1202echo......
  • 探究公众号接口漏洞:从后台登录口到旁站getshell
    探究公众号接口漏洞:从后台登录口到旁站getshell1、入口发现与利用公众号接口安全漏洞某120公众号提供了一处考核平台,通过浏览器处打开该网站。打开可以看到一处密码登录口,试了一下常用的手机号和密码,没有登录成功。这个时候扫个目录吧。扫到了一处管理员页面:/index.php?c=h......
  • 功能不够用?使用C++编写通达信插件及接入Python(二)
    参考:https://zhuanlan.zhihu.com/p/613157262一、准备工作(参考上一篇)安装VS2019 安装pycharm下载 http://help.tdx.com.cn/book.asp《通达信DLL函数编程规范.rar》二、下载python3.x的32位版本,http://www.python.org,随便找个32位版就行了。我准备下载Windowsembeddabl......
  • How to use Linux shell command filter the IP address All In One
    HowtouseLinuxshellcommandfiltertheIPaddressAllInOne如何使用Linuxshell命令过滤IP地址questionHowtofilteroutthereallyusefulIPaddressfromlongstrings?如何从长字符串中过滤出真正有用的IP地址?$cat./dd-ip-notice-robot.sh$./dd......