“read $#”失败(“不是有效的标识符”)。这是什么意思?

时间:2017-10-28 12:53:32

标签: bash arguments

任何人都可以帮我这个代码吗? bash无法识别$ 2,只有前一个$ 1显示错误:read: '2': it is not a valid identificator

#!/bin/bash
read $#
a=$#

1 个答案:

答案 0 :(得分:2)

您无法将$#读入名为2的变量($#扩展为)。

相反,要重新分配$2,您需要使用set来完全重写整套位置参数:

set -- one two

...会将$2设置为two,将$#设置为2(因为提供了两个项目)。

相比之下,如果您只想使用脚本命令行中传递的$2值,则不需要(并且不应该)使用{{ 1}}。

相比之下,如果要访问 last 命令行参数,可以使用间接扩展:

read

...或者,如果你想用从stdin读取的值覆盖最后一个命令行参数:

set -- one two last
last_arg=$#          # sets last_arg=3
result=${!last_arg}  # sets result=last