shell_37.Linux参数传递和读取

1.传递参数
向 shell 脚本传递数据的最基本方法是使用命令行参数。命令行参数允许运行脚本时在命令行中添加数据:

$ ./addem 10 30

2.读取参数
(1)bash shell 会将所有的命令行参数都指派给称作位置参数(positional parameter)的特殊变量。
位置变量的名称都是标准数字:$0 对应脚本名,$1 对应第一个命令行参数,$2 对应第二个命令行参数,以此类推,直到$9。
例:

$ cat positional1.sh 
#!/bin/bash 
# Using one command-line parameter 
# 
factorial=1 
for (( number = 1; number <= $1; number++ )) 
do factorial=$[ $factorial * $number ] 
done 
echo The factorial of $1 is $factorial 
exit 
$ 
$ ./positional1.sh 5 
The factorial of 5 is 120 
$

(2)如果需要输入更多的命令行参数,则参数之间必须用空格分开。
shell 会将其分配给对应的位置变量:

$ cat positional2.sh 
#!/bin/bash 
# Using two command-line parameters 
# 
product=$[ $1 * $2 ] 
echo The first parameter is $1. 
echo The second parameter is $2. 
echo The product value is $product. 
exit 
$ 
$ ./positional2.sh 2 5 
The first parameter is 2. 
The second parameter is 5. 
The product value is 10. 
$

(3)也可以在命令行中用文本字符串作为参数:

$ cat stringparam.sh 
#!/bin/bash 
# Using one command-line string parameter 
# 
echo Hello $1, glad to meet you. 
exit 
$ 
$ ./stringparam.sh world 
Hello world, glad to meet you. 
$

(4)shell 将作为命令行参数的字符串值传给了脚本。但如果碰到含有空格的字符串,则会出现问题:

$ ./stringparam.sh big world 
Hello big, glad to meet you. 
$

(5)参数之间是以空格分隔的,所以 shell 会将字符串包含的空格视为两个参数的分隔符。
要想在参数值中加入空格,必须使用引号(单引号或双引号均可)。

$ ./stringparam.sh 'big world' 
Hello big world, glad to meet you. 
$ 
$ ./stringparam.sh "big world" 
Hello big world, glad to meet you. 
$

(6)如果脚本需要的命令行参数不止 9 个,则仍可以继续加入更多的参数,但是需要稍微修改一下位置变量名。
在第 9 个位置变量之后,必须在变量名两侧加上花括号,比如${10}

$ cat positional10.sh 
#!/bin/bash 
# Handling lots of command-line parameters 
# 
product=$[ ${10} * ${11} ] 
echo The tenth parameter is ${10}. 
echo The eleventh parameter is ${11}. 
echo The product value is $product. 
exit 
$ 
$ ./positional10.sh 1 2 3 4 5 6 7 8 9 10 11 12 
The tenth parameter is 10. 
The eleventh parameter is 11. 
The product value is 110. 
$

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/113310.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

logback-spring.xml 中根据不同的业务表示,分类打印到不同的文件夹、时区动态设置

logback-spring.xml 中根据不同的业务表示&#xff0c;分类打印到不同的文件夹、时区动态设置 logback-spring.xml 完整配置 <?xml version"1.0" encoding"UTF-8"?> <configuration debug"false" scan"true" scanPeriod&…

【RNA biology】RNA的多功能性与早期生命进化

文章目录 RNARNA plays core functions in Central Dogma of BiologyrRNAsnRNA RNA worldReplication催化作用感知环境变化并作出响应 来自Manolis Kellis教授&#xff08;MIT计算生物学主任&#xff09;的课 油管链接&#xff1a;6.047/6.878 Lecture 7 - RNA folding, RNA wo…

TCP和UDP的原理及其区别(三次握手、四次挥手)

TCP和UDP都是在传输层上工作的协议&#xff0c;用于在网络中传输数据。 1、TCP和UDP之间的区别 TCP和UDP的主要区别在于它们提供的服务和特性。TCP提供可靠的、有序的、基于连接的数据传输&#xff0c;适用于对数据完整性和可靠性要求较高的应用&#xff08;邮件、短信&#xf…

Java多线程编程

文章目录 Java多线程编程线程概念线程常用方法线程创建线程优先级终止线程等待线程线程状态线程安全synchronizedvolatilewait和notify方法ThreadLocal的使用标准库线程安全类 Java多线程编程 线程概念 线程概念&#xff1a; 一个线程就是一个 “执行流”. 每个线程之间都可…

JavaPTA练习题 7-4 计算给定两数之间的所有奇数之和

本题目要求接收输入的2个整数a和b&#xff0c;然后输出a~b之间的所有奇数之和。 输入格式: 分别用两行输入两个整数a,b 输出格式: 输出a~b之间的所有奇数之和 输入样例: 在这里给出一组输入。例如&#xff1a; 1 30输出样例: 在这里给出相应的输出。例如&#xff1a; …

Springboot-案例 增删改查二

准备 前端程序、后端工程&#xff08;web/mybatis/mysql/lombok&#xff09;、数据库 开发规范 GET&#xff1a;查询 POST&#xff1a;新增 PUT&#xff1a;修改 DELETE&#xff1a;删除 Result.java Data NoArgsConstructor AllArgsConstructor public class Result {pri…

OracleRAC 安装配置过程中的问题

OS RHAS 3.2 DB 9204 在RAC的安装配置过程中&#xff0c;虽然是严格仔细按照文档来实施&#xff0c;但还是出现不少问题&#xff0c;现整理出来。 现象一 &#xff1a; 在节点一安装数据库的时候出现以下错误 [oraclerac1 dbs]$ sqlplus "/nolog"SQL*Plus: Relea…

LuatOS-SOC接口文档(air780E)--keyboard - 键盘矩阵

keyboard.init(port, conf, map, debounce)# 初始化键盘矩阵 参数 传入值类型 解释 int 预留, 当前填0 int 启用的keyboard管脚掩码, 例如使用keyboard0~9, 则掩码为 0x1FF, 若使用 0~3 则 0xF int keyboard管脚方向映射, 其中输入为0,输出为1, 按位设置. 例如 keyboa…

560. 和为 K 的子数组 --力扣 --JAVA

题目 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的连续子数组的个数 。 子数组是数组中元素的连续非空序列。 解题思路 数组项累加可以使用双层循环进行遍历&#xff1b;子数组的长度是不确定的&#xff0c;也可能存在1 1 2和1 1 - 1…

偶数科技发布实时湖仓数据平台Skylab 5.3版本

近日&#xff0c; 偶数发布了最新的实时湖仓数据平台 Skylab 5.3 版本。Skylab包含七大产品&#xff0c;分别为云原生分布式数据库 OushuDB、数据分析与应用平台 Kepler、数据资产管理平台 Orbit、自动化机器学习平台 LittleBoy、数据工厂 Wasp、数据开发与调度平台 Flow、系统…

bazel远程构建(Remote Execution) --- linux安装Redis

采用源码安装方式 下载地址&#xff1a;Download | Redis&#xff0c;下载最新稳定版本。 step1: 下载最新稳定版本 wget https://download.redis.io/redis-stable.tar.gz step2: 解压安装 tar -xzvf redis-stable.tar.gz cd redis-stable make 执行完 make 命令后&#…

鸿蒙HarmonyOS应用开发:扫描仪文件扫描

华为鸿蒙HarmonyOS已经发展到4.0&#xff0c;使用ArkTS作为开发语言。这篇文章结合Dynamsoft Service开发一个简单的鸿蒙应用&#xff0c;用来获取办公室里连接PC的扫描仪(惠普&#xff0c;富士通&#xff0c;爱普生&#xff0c;等)&#xff0c;把文档扫描到手机里。 准备工作…

【前端设计模式】之外观模式

外观模式是一种结构型设计模式&#xff0c;它提供了一个简单的接口&#xff0c;隐藏了复杂的子系统&#xff0c;并使得客户端能够更方便地使用这些子系统。在前端开发中&#xff0c;外观模式可以帮助我们简化复杂的代码结构&#xff0c;提高代码的可维护性和可读性。 外观模式…

DevExpress WPF Pivot Grid组件,可轻松实现多维数据分析!(二)

在上文中&#xff08;点击这里回顾>>&#xff09;我们主要为大家介绍了DevExpress WPF Pivot Grid组件的超快速枢轴分析功能、Microsoft分析服务等&#xff0c;本文将继续介绍图表透视数据的处理、MVVM支持等。欢迎持续关注我们&#xff0c;探索更多新功能哦~ P.S&#…

【异步爬虫】requests和aiohttp中代理IP的使用

前言 在进行爬虫开发时&#xff0c;我们常常需要使用代理IP来隐藏自己的真实IP地址&#xff0c;以避免被一些网站限制或封禁。requests和aiohttp是两个非常常用的工具&#xff0c;本文将分别介绍如何在它们中使用代理IP&#xff0c;希望可以帮助大家更好地进行异步爬虫开发。 …

电容屏物体识别手工制作

电容屏识别物体效果2 电容屏识别物体效果1 电容屏识别物体效果3 电容屏识别物体效果4 电容识别物理效果5 我们感兴趣的是找到让我们的平面屏幕与物理三维物体和表面交互的方法。 触摸屏无处不在&#xff0c;成千上万的应用程序中有多种设备和屏幕格式&#xff0c;但我们只找到…

STM32的hex文件格式的分析

前言 最近研究Bootloader&#xff0c;通过串口实现STM32程序的更新。需要学习了解STM32的Hex文件格式。在这进行一下总结。 HEX文件格式 我们通过文本形式打开hex文件&#xff0c;可以看到&#xff1a; 这一行就是一条指令数据&#xff0c;这里对数据帧格式进行说明&#xff…

第十二届蓝桥杯模拟赛第一期

A填空题 问题描述 如果整数a是整数b的整数倍&#xff0c;则称b是a的约数。 请问&#xff0c;有多少个正整数是2020的约数。 答案提交 这是一道结果填空的题&#xff0c;你只需要算出结果后提交即可。本题的结果为一个整数&#xff0c;在提交答案时只填写这个整数&#xff0…

elementui select组件下拉框底部增加自定义按钮

elementui select组件下拉框底部增加自定义按钮 el-select组件的visible-change 事件&#xff08;下拉框出现/隐藏时触发&#xff09; <el-selectref"select":value"value"placeholder"请选择"visible-change"visibleChange">&…

Kotlin笔记(六):泛型的高级特性

前面学习了Kotlin中的泛型的基本用法,跟Java中的泛型大致相同&#xff0c;Kotlin在泛型方面还提供了不少特有的功能&#xff0c;掌握了这些功能&#xff0c;你将可以更好玩转Kotlin&#xff0c;同时还能实现一些不可思议的语法特性&#xff0c;那么我们自然不能错过这部分内容了…