Linux 变量值$*

Linux 变量值$*,linux,wildcard,Linux,Wildcard,我是一个Linux新手,我遇到了这个问题 如果已执行以下命令: set 10 20 30 40 50 shift shift 如何从bash手册页中找到$*的值 设置:任意 处理选项后剩余的参数将被处理 作为位置参数的值,并在中指定 订单,至$1,$2$n 以及: shift[n]: n+1…中的位置参数重命名为$1… 由数字$#到$#-n+1表示的参数为 取消设置。。。如果未给出n, 假设为1 因此,您的集合集合: $1 = 10 $2 = 20 $3 = 30 $4 = 40 $5 =

我是一个Linux新手,我遇到了这个问题

如果已执行以下命令:

set 10 20 30 40 50
shift
shift 

如何从
bash
手册页中找到
$*
的值

设置
:任意 处理选项后剩余的参数将被处理 作为位置参数的值,并在中指定 订单,至
$1
$2
<代码>$n

以及:

shift[n]
n+1…
中的位置参数重命名为
$1…
由数字
$#
$#-n+1
表示的参数为 取消设置。。。如果未给出
n
, 假设为1

因此,您的
集合
集合:

$1 = 10
$2 = 20
$3 = 30
$4 = 40
$5 = 50
然后,
shift
命令抛出
$1
,并将其他
$n
变量向下移动一个。你做了两次,这样你就可以:

$1 = 30
$2 = 40
$3 = 50
您可以使用:
echo$*
查看输出:

30 40 50

这有点奇怪。。。。。问题是,$*……的价值。。。。。。这代表了所有输入到命令中的内容,因此被传递到posistional参数

shift命令只会将原始命令行中的所有内容向左推一个位置。。。。所以从10 20 30 40 50。。。。。两次SAHIFT(2次向左推)后,现在有30 40 50个,可以通过使用$like$1指定它们的位置/发生时间来访问它们$二,

$ set 10 20 30 40 50
$ shift 2
$ echo $*
30 40 50
简单地说

如果要访问单个值。。。。只要用1美元,2美元。。。。像wise一样,这里1美元有30美元,2美元有40美元

当然,您想知道您使用了多少个参数$#


这有帮助吗?

查找
$*
值的最简单方法是回显它:

echo $*
考虑到所示的三个步骤,它将响应:

30 40 50
不带引号的
$*
的值与不带引号的
$@
的值相同,并且包含shell脚本的所有位置参数,或者由
set
命令设置的值,例如您显示的值(由任何后续的
shift
命令修改)。用双引号括起来,
“$*”
表示包含所有位置参数的单个字符串,但
“$@”
表示多个字符串,每个字符串与位置参数相同。这种形式通常是正确的

您可以使用
printf
命令查看这些表单之间的差异:

printf "%s\n"  $*
printf "%s\n" "$*"
printf "%s\n"  $@
printf "%s\n" "$@"
如果您使用:

set -- 10 '20 30' '  40  50  '
没有任何换档,然后使用4个
printf
命令:

printf "X%sX\n"  $*
printf "X%sX\n" "$*"
printf "X%sX\n"  $@
printf "X%sX\n" "$@"
X用于标记打印值的开始和结束。输出为:

X10X
X20X
X30X
X40X
X50X
X10 20 30   40  50  X
X10X
X20X
X30X
X40X
X50X
X10X
X20 30X
X  40  50  X

Bash手册的相关部分是。

你说的“查找值”是什么意思?很抱歉,我不应该说“查找”,而是“输入$*”基本上我想找出,给定已执行的命令,我需要获得$*的值。我仍然不明白。在您显示的命令之后,
$*
只是
30 40 50
。这是我一直在寻找的答案,但我不明白为什么$*是30 40和50。。。你看过文件了吗?
X10X
X20X
X30X
X40X
X50X
X10 20 30   40  50  X
X10X
X20X
X30X
X40X
X50X
X10X
X20 30X
X  40  50  X