砍字符串(用户传递的参数)[重复]

Posted

技术标签:

【中文标题】砍字符串(用户传递的参数)[重复]【英文标题】:chop string(arguments passed by user) [duplicate] 【发布时间】:2021-11-26 23:45:02 【问题描述】:

假设用户传递了5个参数($1$2$3$4$5),我如何切断前两个参数($1$2)我只想要最后一个3 个参数

awk 'print $3,$4,$5 < $@' 如果我不知道传递了多少个参数但我不想要前两个参数怎么办

我不能使用 shift,因为我还需要 $2 的信息,那我该怎么办?

我在 bash 脚本中 tar 文件时遇到了这个问题,当用户可能使用像 *.txt 这样的正则表达式时,shell 会自动将其转换为 file1.txt file2.txt(假设只有两个 .txt 文件)

【问题讨论】:

看看shift(见help shift)。 foo="$2"; shift 2? @Socowi 如果我使用 shift 它将删除 $2 中的内容,但我还需要来自用户的信息 见赛勒斯的评论。您可以在移位之前将参数存储在变量中。 【参考方案1】:

有一个语法:

#!/bin/bash

# note: indexing starts at 0

# 0: script name
# 1: arg 1
# 2: arg 2

# this will skip the script name, arg1 and arg2
echo "$@:3"

【讨论】:

如果我执行tar -cvf $2 ../source/$@:3) 之类的操作,以下代码的指示器会变为红色,这是否正常 @Bob 您使用了右括号而不是花括号。另外,您是否尝试将“../source/”添加到每个参数(以$3开头),或者只是添加到$3(以及$4$5等) '没有得到前缀)?最后,您应该在参数和变量引用周围加上双引号,包括$2$@

以上是关于砍字符串(用户传递的参数)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

传递方法作为参数[重复]

使用javascript在包含特殊字符的URL中传递参数[重复]

传递参数的mvc RedirectToAction [重复]

无法在 MySQLi 中通过引用传递参数 [重复]

如何在php中通过引用传递无限参数[重复]

创建中间重复字符串,并在 BigQuery 中传递给 UDF