解析/传递命令行参数到bash脚本 - "$ @"和"$*"之间有什么区别?

Esc*_*ngs 8 bash arguments argument-passing command-line-arguments command-line-parsing

我正在使用bash脚本.jar从任何位置调用和执行文件,而不必经常输入其显式路径.

.jar要求在执行中指定的其他变量参数,因为这些可以是任何东西,他们不能被硬编码到脚本.

共有3个变量,第一个指定要执行的2个操作中的1个.jar,第二个指定要执行此操作的目标文件,第三个指定操作要创建的文件的名称.

我目前使用的脚本是:

#!/bin/bash  
java -jar "C:\path\to\file.jar" "$1" "$2" "$3"
Run Code Online (Sandbox Code Playgroud)

我不是很了解的bash脚本,但在寻找另一种答案我的困境(现已修复),我碰到"$@""$*"引用命令行参数的时候.做更多搜索带我到这个网站:如何维基:如何在bash脚本中读取命令行参数,但我无法找到任何有关这些参数的可靠信息,而无需通过大量的高级bash编程我的头.

所以现在我已经永远漫步,我的问题相对简单:

我可以"$1" "$2" "$3""$@"或替换"$*",如果是,哪个更好用?

那些命令之间的区别是什么?

cho*_*oba 10

"$@"对应于"$1" "$2" "$3""$*"对应于"$1 $2 $3"您似乎不需要的.

没有引号,没有区别,它们都对应$1 $2 $3等等.