相关疑难解决方法(0)

Bash中"$ @"和"$*"有什么区别?

在我看来,它们都存储了所有命令行参数.

两者之间有区别吗?

variables bash command-line-arguments

65
推荐指数
2
解决办法
3万
查看次数

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

我正在使用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""$@"或替换"$*",如果是,哪个更好用?

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

bash arguments argument-passing command-line-arguments command-line-parsing

8
推荐指数
1
解决办法
1万
查看次数

测试是否没有给出位置参数的惯用方法?

如果没有给出位置参数,在 Bash 中测试最惯用的方法是什么?有很多方法可以检查这一点,我想知道是否有一种首选方法。

一些方法是:

((! $# )) # check if $# is 'not true'
(($# == 0)) # $# is 0
[[ ! $@ ]] # $@ is unset or null
Run Code Online (Sandbox Code Playgroud)

parameters bash idioms command-line-arguments conditional-statements

5
推荐指数
1
解决办法
4196
查看次数

bash脚本中的$ @和$*之间的差异

我是bash的新手,我正在学习它,而且我怀疑使用$@和之间的真正区别S*.

我在这里红色Bash特殊参数

我知道两者都扩展到位置参数,但差异发生在双引号内.顺便说一句"$@" = "$1" "$2"..."$n"可能不同于"S*" = "$1$2...$n".

我尝试用一​​个简单的脚本来理解它:

if [ $# -gt 0 ]; then
       echo "Your command line contains $# arguments" 
else
       echo "Your command line contains no arguments"
       exit  fi

echo "Params are: "
echo $@  
echo $* 
echo "$@"    
echo "$*"
Run Code Online (Sandbox Code Playgroud)

如果我像这样在终端中执行我的脚本 ~./my_script par1 par2 par3

结果总是一样的:

Params are:
par1 par2 par3
par1 par2 par3
par1 par2 par3
par1 par2 par3
Run Code Online (Sandbox Code Playgroud)

也许我不明白这两个特殊变量的实际用途以及我的例子是否正确.我想用一个很好的例子来弄清楚这一点.

bash

5
推荐指数
1
解决办法
936
查看次数