shell脚本初学(带参脚本传递、执行)(二)

2023-10-26

一、带有参数的shell脚本

脚本内获取参数的格式为:$nn 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数……

其中 $0 为执行的文件名(包含文件路径)。

#!/bin/bash  # 指定编译器
             # test.sh文件

echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";

为上面脚本设置可执行权限,并执行脚本:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 传递参数实例!
执行的文件名:./test.sh
第一个参数为:1
第二个参数为:2
第三个参数为:3

还有一些,特殊的参数意义,例如:

$# 代表传递到脚本的参数个数

$* 代表以一个单字符串显示所有向脚本传递的参数。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。

$@ 代表与$*相同,但是使用时加引号,并在引号中返回每个参数。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。

#!/bin/bash
# test.sh文件

echo "Shell 传递参数实例!";
echo "第一个参数为:$1";

echo "参数个数为:$#";
echo "传递的参数作为一个字符串显示:$*";
echo "传递的参数作为一个字符串显示:"$*"";
# 看 * 和 @ 的区别
echo "传递的参数作为一个字符串显示:$@";
echo "传递的参数作为多个字符串显示:"$@"";

结果为:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 传递参数实例!
第一个参数为:1
参数个数为:3
传递的参数作为一个字符串显示:1 2 3
传递的参数作为一个字符串显示:"1 2 3"

传递的参数作为一个字符串显示:1 2 3
传递的参数作为一个字符串显示:"1" "2" "3"

$* 与 $@ 区别:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)

再举例子来区别$*和$@:

#!/bin/bash

echo "-- \$* 演示 ---"
for i in "$*"; do
    echo $i
done

echo "-- \$@ 演示 ---"
for i in "$@"; do
    echo $i
done

执行:

$ chmod +x test.sh 
$ ./test.sh 1 2 3

结果:

-- $* 演示 ---
1 2 3
-- $@ 演示 ---
1
2
3

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shell脚本初学(带参脚本传递、执行)(二) 的相关文章

随机推荐

  • uni-app使用时遇到的坑

    一 uni app开发规范 1 微信小程序request请求需要https 小程序端 在本地运行时 可以使用http 但是预览或者上传时 使用http无法请求 APP端 一般APP可以使用http访问 高版本的APP可能需要用https访问
  • 浪涌测试如何进行试验配置

    此文只是针对浪涌测试中的试验配置部分内容进行总结 如下表所示 试验对象 开路电压波形 注1 短路电流波形 输出阻抗 电源 线 线 1 2 50us 8 20us 2 18uF 线 地 2 10 9uF 非屏蔽不对称 注2 非差分通讯线 线
  • 和为s的数字

    题目描述 输入一个数组和一个数字s 在数组中查找两个数 使得它们的和正好是s 如果有多对数字的和等于s 输出任意一对即可 你可以认为每组输入中都至少含有一组满足条件的输出 样例 输入 1 2 3 4 sum 7 输出 3 4 分析 首先想到
  • Ubuntu系统安装分区

    一 U盘启动盘制作 1 U盘一个 U盘空间大小足够大 8G够用了 U盘里面的内容提前转存备份 2 UltraISO软碟通启动制作工具或Universal USB Installer 3 Ubuntu官网找到自己需要Ubuntu版本下载ISO
  • blfs:为lfs虚拟机增加桌面03

    编译安装Qt5 15 我比较好奇 当前只安装了twm X org提供的简单的窗口管理器 这个时候Qt的界面是怎么样的一个呈现 Qt5 15安装 required和recommanded必装 optional中涉及到runtime的建议安装
  • 树莓派4B Ubuntu 远程桌面 步骤

    文章目录 准备 更换国内源 更新软件列表和软件 安装SSH 安装ubuntu desktop xrdp方法 VNC方法 问题故障解决 花屏 蓝屏 黑屏 无法修正错误 因为您要求某些软件包保持现状 就是它们破坏了软件包间的依赖关系 参考 准备
  • 时间序列-预测-经典算法:Arimax【带额外输入的自回归综合移动平均】【多元变量预测】【ARIMA模型的一个扩展版本】

    标准的ARIMA 移动平均自回归模型 模型允许只根据预测变量的过去值进行预测 该模型假定一个变量的未来的值线性地取决于其过去的值 以及过去 随机 影响的值 ARIMAX模型是ARIMA模型的一个扩展版本 它还包括其他独立 预测 变量 该模型
  • C开源项目-TinyHttp解读(上)

    项目简介 此项目可以自行在GitHub上进行下载 作者的ReadMe文档也写得是比较详细的 这里用到了较多的Unix编程 不会的可以一点一点去查 实名感谢我们家杰佬发给我的APUE 可以当字典查 项目内容 其实就是实现了一个轻量级服务器的功
  • ubuntu 14.04安装opencv2.4.13

    1 下载opencv2 4 13的 zip包 http opencv org downloads html 2 解压到任意目录 unzip opencv 2 4 13 zip 3 在解压后的目录里创建一个release cd opencv
  • 虚拟机 arm服务器,一种面向ARM多核处理器服务器平台的系统虚拟机

    主权项 1 一种面向ARM多核处理器服务器平台的系统虚拟机 基于KVM实现 采用宿主模型架构 其特征在于 该虚拟机主要包括 1 物理硬件 物理硬件进一步包括物理CPU 物理内存 物理外设 物理硬件是整个系统虚拟机的硬件基础设施 2 宿主OS
  • css样式表的作用和意义,什么是CSS?

    CSS是大家很熟悉的一个词了 但是如果问你 什么是CSS 你能回答得出吗 到底什么是CSS CSS有什么作用 CSS长什么样子 今天我们就给大家一一解答 CSS全称为Cascading Style Sheets 层叠样式表 中文翻译为 层叠
  • SUSE linux 使用LVM安装系统和管理

    引出 在我们安装好linux系统后会发现在需要修改磁盘分区的时候会比较困难 系统安装的 目录的文件系统要更改基本不太可能 其他目录如 home目录也比较困难 但是系统安装时要是采用的LVM管理的方式安装的话就会截然不通 一 首先普及下LVM
  • 嵌入式python智能实训总结_嵌入式智能家居心得体会 智能家居实训报告2000字

    家里装全套智能家居是一种什么体验 男士体验 5 半年后 我们发现有一篇回到第一篇文章 女性体验 第一篇 嗯 半夜哺乳 不用涂抹 第二篇 睡觉时忘记关灯 不要踢老公 第三 可以随时检查宝宝的状态 而且你可以监控老公是否不在家 第四 出行时 不
  • 软件测试之白盒测试

    白盒测试 一 白盒测试定义 白盒测试 又称结构测试 是在已知程序的内部工作过程的情况下 用来测试程序的内部结构 并判定其结果是否与预期的结果一致 一般说来 白盒测试相对简单 因为白盒测试是在已知程序的内部工作流程的情况下进行的 而且白盒测试
  • GIT常用命令以及使用详解图示

    1配置个人信息 方便提交代码管理 获取Git配置信息 执行以下命令 git config list 如果你还没有设置名字 user name 和 user email的话 可以用以下指令设置 git config global user n
  • 两种方法教你在postman设置请求里带动态token

    postman传递动态参数的最佳实践 问题描述 一 设置全局 环境变量传递 在postman中新增一个环境变量devToken 将获取到的token赋值给devToken 其他请求接口根据需要在请求时带上devToken 二 在每个请求中带
  • JAVA通过反射调用外部的jar包

    把外包jar的信息写在配置文件中 这样如果外部jar改变了 只需要修改properties相应的配置即可 config properties文件内容如下 jarUrl E MessageSend jar className org line
  • 高速USB转8串口产品设计-RS485串口

    基于480Mbps 高速USB转8路串口芯片CH348 可以为各类主机扩展出8个独立的串口 使用厂商提供的VCP串口驱动程序 可支持Windows Linux Android macOS等操作系统 使用单个CH348芯片即可实现USB一拖八
  • 离线 安装webssh

    1 安装包 和 webssh 代码准备 1 cmake 安装 安装参考文档 文档地址 下载地址 tar xvfz cmake 3 24 2 linux x86 64 tar gz 配置环境全局变量 vim etc profile 添加 ex
  • shell脚本初学(带参脚本传递、执行)(二)

    一 带有参数的shell脚本 脚本内获取参数的格式为 n n 代表一个数字 1 为执行脚本的第一个参数 2 为执行脚本的第二个参数 其中 0 为执行的文件名 包含文件路径 bin bash 指定编译器 test sh文件 echo Shel