首页 > 系统相关 >shell脚本while循环、read读取控制台输入与函数

shell脚本while循环、read读取控制台输入与函数

时间:2024-04-20 17:00:33浏览次数:22  
标签:shell read sum echo while basename bash

image

while循环

while循环结构
while [条件判断]
do
程序
done
脚本示例:

点击查看代码
#!/bin/bash
while [ $a -le $1]
do
	sum=$[ $sum + $a ]
done
echo $sum

简易写法:

点击查看代码
#!/bin/bash
a=1
while [ $a -le $1 ]
do
	let sum+=a
	let a++
done
echo $sum

read 读取控制台输入
基本语法:
read(选项)(参数)
1、选项
-p: 指定读取值时的字符;
-t: 指定读取值等待时间(秒->s)如果-t 不加表示一直等待。
2、参数
变量: 指定读取值的变量名
示例:

点击查看代码
#!/bin/bash
read -t -p "请在5s内输入您的相关个人信息,超时将退出。" AS
echo $AS

函数

先举一个小栗子:

点击查看代码
#!/bin/bash
filename="$1"_log$(datename +%s)
echo $filename

1.1 basename
基本语法

basename [string/patename] [suffix]
功能描述:basename命令会删掉所有的前缀包括最后一个('/')字符,然后将字符串显示出来。
basename可理解为去路径的文件名
选项:
suffix为后缀,如果suffix被指定了,basename会将pathname中的suffix去掉。
脚本示例:

点击查看代码
#!/bin/bash
echo '========== $n ==========='
echo /home name: $(basename $0 .sh)
echo /home/xiaohu name: $(cd 
$(dirname $0); pwd)
echo op name: $1
echo op name: $2

自定义函数:
基本语法:
[function] funname[0]
{
ACTION
[return int;]
}
技巧:
1、必须在调用函数地方之前,先声明函数,shell脚本是否在逐步运行,不会像其他语言一样先编译。
2、函数返回值,只能同归$?变量获得,可以显示加: return返回。
如果不加,将以最后一条命令运行结果,作为返回值。renturn[0~255]
脚本示例:

点击查看代码
#!/bin/bash
function add(){
		s=$($1 + $2)
			echo $s
}

echo '=========== 调用参数 ============'
read -p "请输入第一个整数:" a
read -p "请输入第二个整数: " b

echo '=============== 传参 ========='
sum=$[add $a $b]
echo "和:"$sum
echo "和的平方:"$[$sum * $sum]

声明:
以上为个人笔记,内容不完全正确,请谨慎参考。

标签:shell,read,sum,echo,while,basename,bash
From: https://www.cnblogs.com/brxx/p/18147230

相关文章

  • linux4-vim与shell脚本
    1.vim+文件名编辑文件a、i、o进入输入模式,esc退出输入模式; :w保存:q退出:q!强制退出2.vim/etc/hostname修改主机名3./etc/sysconfig/network-scripts此目录中修改网卡信息1TYPE=Ethernet//设备类型2BOOTPROTO=static//ip分配模式3......
  • 【转载】Java函数式编程——为什么new Thread()中要用函数式编程
    面向对象过分强调“必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法——强调做什么,而不是以什么形式做。面向对象的思想:做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情.函数式编程思想:只要能获取到结果,谁去做的,怎么做的都不重要,......
  • com.alibaba.druid.pool.DataSourceClosedException: dataSource already closed at S
     适用的druid数据库连接池一直有问题,无法连接,但是什么都没改过。排查了数据库(数据库单独连接没问题)、防火墙、IP白名单等步骤后,重启服务器、重启应用后都无法解决。重启应用过程中发现了应用无法正常启动的情况,这点让人觉得很意外,于是想看下现在服务器上运行的jar包情况,命令是......
  • PowerShell 遇到 .ps1,因为在此系统上禁止运行脚本
    PowerShell遇到.ps1,因为在此系统上禁止运行脚本 解决方法:以管理员身份打开PowerShell:查看当前的执行策略:Get-ExecutionPolicy *`Restricted`:不允许任何脚本运行。这是默认设置,也是最安全的设置。*`AllSigned`:只允许运行由受信任的发布者签名的脚本。*`RemoteSign......
  • 使用命令行(powershell)压缩(7Z RAR)指定日期文件
    使用命令行(powershell)压缩(7ZRAR)指定日期文件,powershell,7z。 WINDOWS命令行是无法按时间过滤文件的,我们通过powershell里的Get-ChildItem+ Where-Object来过滤文件。 本例子是powershell+7z,RAR的自行更改。 echo"--开始了--"#只压缩今天编译出来的文件,根据......
  • rt-thread rtc 时间乱跳,初始化失败等问题
    添加rtc组件步骤,系统版本4.1.11.rt-threadsettings中添加rtc2.board.h中打开rtc的开关  #defineBSP_USING_ONCHIP_RTC3.stm32g0xx_hal_conf.h 打开rtc选项  #defineHAL_RTC_MODULE_ENABLED4.rt-thread\components\drivers\rtc\rtc.c中注释掉与drv_rtc.c中冲突的代......
  • WebShell管理工具的流量特征-哥斯拉 v4.01
    一、哥斯拉v4.01PHP_EVAL_XOR_BASE64:1.WebShell连接通讯流量分析本次案例以哥斯拉v4.01连接PHP_EVAL_XOR_BASE64-WebShell木马的通讯过程为例哥斯拉v4.01主界面如下:有效载荷支持:Asp、Java、CS、Php默认加密方式有:PHP_EVAL_XOR_BASE64、PHP_XOR_BASE64、PHP_XOR_RAW我们......
  • ThreadLocal 、 实例变量、静态变量 以及 局部变量的区别
    ThreadLocal的作用ThreadLocal用于声明一个变量,这个变量在每个线程中都会创建一份实例,各个线程之间的数据不能共享,某个线程中的ThreadLocal变量与线程进行绑定,能够保证变量的线程安全。使用示例一:/***@authorErywim2024/4/16*/publicclassTemp{publ......
  • 用Scanner交互 和 while 循环 制作简易计算器
    publicstaticvoidmain(String[]args){System.out.println("欢迎来到简易计算器!");Scannerscanner=newScanner(System.in);System.out.println("请输入要计算的第一个数字:");doublei=scanner.nextDouble();System.out.println("请选择操作:1:加2:减3:乘4:除&qu......
  • python使用pip安装模块出错 Retrying (Retry(total=0, connect=None, read=None, redi
    问题:在使用python时,使用pip安装psutil出错(pipinstallpsutil),错误信息:Retrying(Retry(total=0,connect=None,read=None,redirect=None,status=None))afterconnectionbrokenby‘SSLError(SSLError(1,u’[SSL:CERTIFICATE_VERIFY_FAILED]certificateverifyfailed......