首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将最后一个位置参数赋给变量并将其从"$@“中删除

将最后一个位置参数赋给变量并将其从"$@"中删除的方法是使用特殊变量和数组操作符。在Shell脚本中,可以使用以下代码实现:

代码语言:txt
复制
# 获取最后一个位置参数
last_param="${!#}"

# 将最后一个位置参数赋给变量
variable="$last_param"

# 从"$@"中删除最后一个位置参数
set -- "${@:1:$(($#-1))}"

这段代码首先使用特殊变量"$#"获取位置参数的个数,然后使用数组操作符"${!#}"获取最后一个位置参数的值,并将其赋给变量"last_param"。接下来,使用数组操作符"${@:1:$(($#-1))}"将"$@"中除最后一个位置参数外的所有参数重新设置给"$@",实现删除最后一个位置参数的效果。

这种方法适用于各种Shell脚本开发场景,可以方便地处理位置参数并进行变量赋值和删除操作。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云函数(云原生、函数计算):https://cloud.tencent.com/product/scf
  • 腾讯云云服务器(服务器运维):https://cloud.tencent.com/product/cvm
  • 腾讯云数据库(数据库):https://cloud.tencent.com/product/cdb
  • 腾讯云内容分发网络(CDN):https://cloud.tencent.com/product/cdn
  • 腾讯云人工智能(人工智能):https://cloud.tencent.com/product/ai
  • 腾讯云物联网套件(物联网):https://cloud.tencent.com/product/iot-suite
  • 腾讯云移动推送(移动开发):https://cloud.tencent.com/product/tpns
  • 腾讯云对象存储(存储):https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务(区块链):https://cloud.tencent.com/product/tbaas
  • 腾讯云虚拟专用网络(VPC):https://cloud.tencent.com/product/vpc
  • 腾讯云安全组(网络安全):https://cloud.tencent.com/product/sfw
  • 腾讯云音视频处理(音视频、多媒体处理):https://cloud.tencent.com/product/mps
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Linux Shell基础篇三 - 内置命令

dirs 显示当前存储目录的列表 disown 进程作业表刪除指定的作业 echo 指定字符串输出到 STDOUT enable 启用或禁用指定的内建shell命令 eval 指定的参数拼接成一个命令...并将其加入索引数组 popd 目录栈删除记录 printf 使用格式化字符串显示文本 pushd 向目录栈添加一个目录 pwd 显示当前工作目录的路径名 read STDIN 读取一行数据并将其一个变量...readarray STDIN 读取数据行并将其放入索引数组 readonly STDIN 读取一行数据并将其一个不可修改的变量 return 强制函数以某个值退出,这个值可以被调用脚本提取...set 设置显示环境变量的值和 shell 属性 shift 位置参数依次向下降一个位置 shopt 打开/关闭控制 shell 可选行为的变量值 source 读取执行指定文件的命令(在当前...,但不换行 \t 插入tab \v 与\f相同 \\ 插入\字符 \nnn 插入nnn(八进制)所代表的ASCII字符; read读取控制台输入 read用于标准输入读取数据赋值变量

1.4K30

Shell脚本——内置命令

命令 read 是 Shell 内置命令,用来标准输入读取数据赋值变量。...dirs 显示当前存储目录的列表 disown 进程作业表刪除指定的作业 echo 指定字符串输出到 STDOUT enable 启用或禁用指定的内建shell命令 eval 指定的参数拼接成一个命令...并将其加入索引数组 popd 目录栈删除记录 printf 使用格式化字符串显示文本 pushd 向目录栈添加一个目录 pwd 显示当前工作目录的路径名 read STDIN 读取一行数据并将其一个变量...readarray STDIN 读取数据行并将其放入索引数组 readonly STDIN 读取一行数据并将其一个不可修改的变量 return 强制函数以某个值退出,这个值可以被调用脚本提取...set 设置显示环境变量的值和 shell 属性 shift 位置参数依次向下降一个位置 shopt 打开/关闭控制 shell 可选行为的变量值 source 读取执行指定文件的命令(在当前

2.1K10
  • Shell 内建命令:Shell 的内在魔力

    dirs显示当前存储目录的列表disown进程作业表刪除指定的作业echo指定字符串输出到 STDOUTenable启用或禁用指定的内建shell命令eval指定的参数拼接成一个命令,然后执行该命令...在函数创建一个作用域受限的变量logout退出登录 shellmapfile STDIN 读取数据行,并将其加入索引数组popd目录栈删除记录printf使用格式化字符串显示文本pushd向目录栈添加一个目录...pwd显示当前工作目录的路径名read STDIN 读取一行数据并将其一个变量readarray STDIN 读取数据行并将其放入索引数组readonly STDIN 读取一行数据并将其一个不可修改的变量...return强制函数以某个值退出,这个值可以被调用脚本提取set设置显示环境变量的值和 shell 属性shift位置参数依次向下降一个位置shopt打开/关闭控制 shell 可选行为的变量值source...性别 体重kgprintf "%-10s %-8s %-4.2f\n" alex 男 62.3452# 姓名 性别 体重kg# alex 男 62.35read 用来标准输入读取数据赋值变量如果没有进行重定向

    10900

    学习JavaScript数据结构与算法(一)

    它是一个数组,包含函数被调用时传入的参数。即使不知道参数的名称,我们也可以动态获取使用这些参数。...已知斐波那契数列的前两项是1, 第三项开始,每一项都等于前两项之和。如何实现此功能呢? 实现思路: 声明创建一个数组 把斐波那契数列的前两个数分别数组的第二和第三个位置。...我们可以循环数组的元素,最后一位(长度值就是数组的末尾位置) 开始,将对应的前一个元素(i-1)的值给它(i),依次处理,最后把我们想要的值一个位置(索引 0)上。...3.3.1数组末尾删除元素 数组的pop方法 3.3.2数组开头删除元素 数组的shift方法 3.3.2在任意位置添加或删除元素 通过splice函数 array.splice(index,howmany...\ 如果未规定此参数,则删除 index 开始到原数组结尾的所有元素。 第三个参数可选。

    19040

    1.1 C++ STL 字符串构造函数

    接下来,字符数组ch的前3个元素赋值新的字符串变量str_4。最后,使用构造函数5个字符x组成的字符串xxxxx赋值新的字符串变量str_5。...接着,定义了三个新的字符串变量s1、s2和s3,使用assign()函数对其进行初始化。使用assign()函数的第一个形式,字符串str第1位开始向后截取4个字符,赋值字符串s1。...最后,定义了一个新的字符串变量str3,并将其初始化为"hello lyshark",然后使用replace()函数第1个位置开始替换3个字符并将其替换成"abcde"。...使用substr()函数提取字符串email的第0个字符开始到pos位置之前的子串,并将其赋值变量username,输出该变量的值。...使用substr()函数提取字符串email的pos+1位置开始到结束的子串,并将其赋值变量mail,输出该变量的值。

    17920

    Python基础数据类型

    数值 说到基础数据类型之前,我们有必要弄清楚“变量”的概念。变量,顾名思义,就是可以变化的量。例如a = 1, 这里的“等于”我们叫做“赋值”,正确的说法是:把1了a,这里的a就是变量。...a = 1 print(a) 这就是我们为什么要先说变量的原因,所有的Python数据类型都要变量(容器),这样我们才可以拿来使用。 ? 我们提到,变量变化的量,前面的例子没有体现变化。...这里,我们需要拿一个新的杯子(变量c),先把可乐(a)倒给新杯子(c),这样我们就可以雪碧(b)倒给a,然后新杯子的可乐(c)倒给b。...Python,我们都是0开始索引。 ? ? 字符串方法 由于后面的数据分析,会遇到文本的处理。所以,我们有必要先讲一下字符串的一些方法。...replace(替换你),就是部分字符替换为其他字符。 ? strip(去掉你),该方法不加参数会去掉两头的空行和换行符等;加参数就是删除两头的指定字符。

    58020

    1.1 C++ STL 字符串构造函数

    接下来,字符数组ch的前3个元素赋值新的字符串变量str_4。最后,使用构造函数5个字符x组成的字符串xxxxx赋值新的字符串变量str_5。...接着,定义了三个新的字符串变量s1、s2和s3,使用assign()函数对其进行初始化。使用assign()函数的第一个形式,字符串str第1位开始向后截取4个字符,赋值字符串s1。...最后,定义了一个新的字符串变量str3,并将其初始化为"hello lyshark",然后使用replace()函数第1个位置开始替换3个字符并将其替换成"abcde"。...使用substr()函数提取字符串email的第0个字符开始到pos位置之前的子串,并将其赋值变量username,输出该变量的值。...使用substr()函数提取字符串email的pos+1位置开始到结束的子串,并将其赋值变量mail,输出该变量的值。

    18730

    Excel编程周末速成班第3课:Excel对象模型

    如果没有命名参数,则该方法只能根据其在参数列表位置来标识一个参数,因此你必须为要忽略的所有可选参数包括占位符(逗号)以使用默认值。...一种是直接的,如下面的代码行所示,它使指定的工作表重新计算其所有公式: Sheets(“销售数据”).Calculate 你也可以引用赋值变量,然后使用该变量来引用对象,例如: Set MyWorksheet...Item设置为引用集合的第一个元素,执行循环中的代码(由...表示)。...工作簿的名称要么是你使用SaveAs方法的名称(在本课程的后面部分介绍),要么是Excel在创建新工作簿时的默认名称(工作簿1、工作簿2,等)。Save方法不带任何参数。...创建新工作表后,最好将其Name属性设置为Excel的默认Sheet1和Sheet2名称以外的名称。

    5.1K30

    Linux Shell编程

    5A=200(×) 等号两侧不能有空格 变量名称一般习惯为大写,这是一个规范,我们遵守即可 命令的返回值变量 A='date'反引号,运行里面的命令,并把结果返回变量A A=$(date)等价于反引号...声明静态的变量B=2,不能unset readonly B=2 echo "B=$B" #指令返回的结果变量 C=`date` D=$(date) echo "C=$C" echo "D=$D"...# 位置参数变量 # 基本介绍 当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量 比如: ....的结果某个变量,使用` ` ` expr m - n` expr \*,/ ,% 乘,除,取余 案例演示: #!...,比如:2021-03-12_230201.tar .gz 在备份的同时,检查是否有10天前备份的数据库文件,如果有就将其删除

    36.3K20

    python学习

    .remove(xxx)如果有两个相同的,只删除一个 users.remove('a') #删除users里的a .pop(n)n 是索引位置,如果不加索引位置,默认删除最后一个 delete = users.pop...,也可以通过seek调整光标的位置 w+ 读:默认光标永远在写入的最后或0,也可以通过seek调整光标位置 写:先清空 a+ 读:默认光标在最后,也可以通过seek调整光标位置,然后再去读取 写:永远写在最后...在函数内部将x值改为2,改变的是局部变量x,外部x不受影响,最后的输出结果可以验证。...这是因为形参的值是根据位置而赋值的。...),然后让每个元素执行函数(第一个参数),每个函数执行的结果保存到新的列表返回。

    84910

    Unreal 骨骼动画入门(一)

    然后,通过 Calculate Direction 节点获取当前方向,赋值 Direction 变量,大致如下图所示: 图片 此时我们可以回到 Normal 节点的编辑界面, Speed 和 Direction...两个变量赋值 blend space 的对应位置。...回到 state machine 编辑界面,双击 Normal 到 Crouch 的转换规则圆圈,进入转换规则编辑界面, Crouched 变量的值 Result 节点: 图片 类似地,在 Crouch...到 Normal 的转换规则 not Crouched 的值 Result 节点: 图片 而在 Crouch 状态,我们也 Output Animation Pose 输入一个动画,这里就不重复...最后,在菜单栏的 Edit 菜单下点击「Project Settings…」,然后在 Input 菜单的 Action Mappings 列表里加一项「Crouch」,绑定一个按键,这里绑定的是左

    82760

    Java 数组及数组常用算法

    会自动数组元素依次变量。...接着我们用 new 关键字为其创建了一个 int[] 类型的对象,这个对象存放在系统的堆内存,在用“=”将其变量的时候,实际上是堆内存里对象的地址变量,这时候就可以通过”arrayName...假设我们再创建一个数组变量 array2,并将 arrayName 给它,这时候 array2 接受到的实际是 arrayName 变量存储的地址,所以这两个变量指向同一个数组。...若我们把 1 array2[0],这时候我们打印 arrayName[0] 的时候会发现,它的值也是1,这是因为它们指向的是同一个内存存储的值。 ?...  数组删除一个数据,继续保持有序排列 public class DeleteNumFromArray{ public static void main(String[] args){ //

    1.2K20

    python编程入门到实践 学习笔记

    1访问列表元素 列表是有序集合,因此要访问列表的任何元素,只需将该元素的位置或索引告诉Python即可。 索引0 而不是1 开始。 索引指定为-1,可让Python返回最后一个列表元素。...如果列表a列表b,而不是列表a的副本存储到列表b,这种语法实际上是让Python变量b关联到包含在a的列表,因此这两个变量都指向同一个列表,此处为赋值,不是拷贝。...结合使用函数和while 循环 函数存储在模块,再导入整个模块。 from a import b as c,a.py引入函数b,函数b一个别名c。...()) 5使用文件的内容 readlines()文件读取每一行,并将其存储在一个列表。...,并将其存储到变量numbers

    4.2K20

    EasyC++02,C++常用语句简介

    一个变量所需要的内存,一个是这块内存的名称。比如在这个例子当中,我们声明了一个int型的变量。它占据32个二进制位,也就是4个字节,这块内存的名称被叫做wordCnt。...赋值语句 变量被声明了之后,我们就可以通过赋值语句给它上我们想要的值。...,10先赋值最右侧的roomCnt,再personCnt,最后wordCnt。...和cout一样,我们可以终端读入多种类型的数据,如浮点数、整数、字符串等,cin会自动读入的数据转化成对应的数据类型完成赋值。...其实只需要保证函数声明在main函数之前即可,函数的实现并不限制摆放位置。 对于函数的声明,和变量的声明类似,它分为三个部分。分别是函数返回类型,函数名和函数所需的外界参数

    30330

    批处理的for循环_批处理for循环跳出循环

    ,还可引用环境变量),FOR命令是按一定顺序和规律分次读取集中内容,赋值变量执行do后的命令,进行循环下一轮,直至集中内容读取完毕,而括号是格式必须的(in到后面括号之间要有空格)。...”前缺省参数选项时的情况,循环中每轮会默认以空格为分隔,在打开的文件逐行字符串分段,又因为没给增添附加变量(即仅一个变量%c)则仅把第一段的字符%c,再执行 do后的命令,然后进行循环的下一轮,...——用什么刀来切分 tokens=1,4 这个等号后的数字表示依次取第几个被分隔的字符串段,来分别%变量及顺序附加的变量,本例取第1个段%c,第4个段c后的一个变量也就是%d,...tokens=1,4仅需两个,起始的是in () 括号的%c 则每行第一段%c,第4段变量%d 以第二行(第一行被skip=1跳过了)为例,在 “张三 男 36 A-1 ” (正好也是用的空格分隔...您现在可以使用下列选项语法: ~I – 删除任何引号(“),扩充 %I %~fI – %I 扩充到一个完全合格的路径名 %~dI – 仅 %I 扩充到一个驱动器号 %~pI – 仅 %I

    3.7K10

    【JavaWeb】67:一张只有程序员能看懂的图片

    ②编写sql语句执行 sql语句在Java是以一个字符串的形式而编写的。 所以要将其意义完成转换。 同时因为name和pwd是两个变量,要将其拼接起来。 ?...在Java写sql语句的时候,可以先在数据库编写好执行看看有没有问题。 若是没有问题,再将其拼接成对应的Java字符串。...是一个占位符,表示所在的位置一个参数。 它有一个非常强大的作用在于,占位符里的参数,必然会是普通字符串。什么意思呢? 我们以前学过转义字符。...本来“--”在sql是注释的意思,但是通过占位符将其转义成一个普通的字符了,不具有注释的作用了。 ②预编译 预编译等于是sql语句提前了,先编译再设置参数。...其中PreparedStatement是Statement的一个子接口。 prepared,也就是准备、预先的意思。 ③参数索引 setString()方法就是占位符具体的值。

    30740

    数据结构

    操作数 i 是1开始,存到数组应该是 i-1 开始 插入元素一共要提供三个参数:插入的线性表,插入的位置,插入的元素值 void ListInsert(SqList &L,int i,int e)...true //单链表的插入操作,需要一个循环变量计数和一个循环指针,去找到应该循环d p指针后移: p = p-> next; 下一个指针的地址域一个,令上一个节点后移一个单位 删除节点:首先要找到第...申请插入节点s赋值 // 3. r的next指针指向s // 4. r后移一步指向s,为下一步的操作做准备 // 最后最后一个节点的nextz 二叉树 顺序存储 几个常考的基本操作 i的左孩子...建堆 自顶向下建堆法 元素一个一个插入到堆内,新元素放到堆的最后一位,然后对其进行上滤操作 取最值调整 在大根堆,如果父节点比两个子节点都要小,则选最大的往上走 在小根堆,如果父节点比两个子节点都要大...,则选最小的往上走 排序顺序:最后一个父节点开始往上找

    11210

    用动画解释 Javascript 是如何运行的!结果一目了然!

    然后我们a和b的值相加并将其存储在sum变量。 让我们看看JavaScript如何在浏览器执行代码: 浏览器使用两个组件创建一个全局执行上下文,即内存和代码组件。...,它接受一个number类型的参数返回该数字的平方。...它将获取num的值,num的值等于第一个变量的2,然后它将计算ans。ans计算完毕后,它将返回square2的值。 一旦函数返回值,它将在完成工作后销毁其执行上下文。...函数a分配内存调用函数inside。为函数insideA创建了一个执行上下文,放置在'function a'的调用堆栈之上。 现在,这个insideA函数返回true,并将从调用堆栈移除。...由于'function a'内部没有代码,执行上下文将从调用堆栈移除。 最后,全局执行上下文也调用堆栈删除

    1.1K20

    第八节(字符和字符串)

    malloc()返回的值被该指针: ptr = malloc(1); 该语句分配了1字节的内存块,并将其地址赋值ptr。 与在程序声明变量不同,这1字节的内存没有名称。...第29行,ptr指针的值p指针。因此,p和ptr中储存的值相同。 for循环通过p指针各值放入已分配的内存。 第31行的for语句中,把65count,每次循环递增1,直至91。...字母赋值指针指向的内存后,循环结束。 第36行,把空字符储存在p指向的最后一个地址上。加上了这个空字符,便能像字符串那样使用这些值。 记住,ptr仍指向第1个值一A。...如果在程序动态地分配了内存,使用完毕后就必须将其释放或归还。 free()函数用于释放已分配的内存。系统之前分配了一部分内存,并把地址ptr。 因此,第42行的free函数这些内存归还系统。...char类型变量的用途之一是储存单个字符。字符还通常以数字形式储存: ASCII码数值码每个字符。

    29930
    领券