读取:在bash中读取输入时不是有效标识符

读取:在bash中读取输入时不是有效标识符,bash,Bash,所以我在Shell脚本中有这个程序,它是基本的,但我想在启动程序时从标准输入中读取3个值,然后我想打印这些值,但由于某种原因,它会给出一个错误 预期产出: ./my_script.sh hello bye 2 hello bye 2 我的输出: ./my_script.sh hello bye 2 Word1=1 meu_script.sh: line 2: read: `Word2=': not a valid identifier hello bye 2 节目: #!/bin/bash

所以我在Shell脚本中有这个程序,它是基本的,但我想在启动程序时从标准输入中读取3个值,然后我想打印这些值,但由于某种原因,它会给出一个错误

预期产出:

./my_script.sh hello bye 2
hello
bye
2
我的输出:

./my_script.sh hello bye 2
Word1=1
meu_script.sh: line 2: read: `Word2=': not a valid identifier
hello
bye
2
节目:

#!/bin/bash
read -p "Word1=" $1 "Word2=" $2 "Num=" $3

Word1="${1}"
Word2="${2}"
Num="${3}"
echo ${1}
echo ${2}
echo ${3}

有人能告诉我发生了什么事吗?因为我不懂,顺便说一句,我在用shell脚本编程方面相当熟悉。也许我把你的问题简单化了,但是如果你想提示用户输入并将这些输入保存到变量中(而不是直接从命令行使用
$1
$2
,等等)的话,你只是想要这个吗

#!/bin/bash
read -p "Enter word 1: " Word1
read -p "Enter word 2: " Word2
read -p "Enter Num: " Num

echo $Word1
echo $Word2
echo $Num
或者,如果您想直接从命令行获取它们,只需使用
$1
$2
$3

#!/bin/bash
echo $1
echo $2
echo $3

这样,
/my_script.sh hello bye 2
会打印您想要的结果。

如果您在命令行上传递值,那么您就不需要
读取
命令。。。您只需要
Word1=…/Word2=…/Num=…
将命令行值保存到变量中的命令;'当然,这就提出了一个问题,如果你要做的只是
echo${1]/${2}/${3}
,为什么还要麻烦变量呢?实际上我想做一些更具体的事情,但我只是以这个简单的程序为例