Linux 变量值$*
我是一个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 =
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