任何人都可以帮我这个代码吗? bash无法识别$ 2,只有前一个$ 1显示错误:read: '2': it is not a valid identificator
。
#!/bin/bash
read $#
a=$#
答案 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