gpt4 book ai didi

bash - 将 Bash 脚本参数 $@ 存储在变量中

转载 作者:行者123 更新时间:2023-11-29 09:38:00 26 4
gpt4 key购买 nike

如何将 $@ 存储在变量中同时保持其属性?

即使在所有可能的情况下使用 $@ 或我自己的变量,我也想获得完全相同的行为。

以下尝试无效:

args=$@
args2="$@" # the arguments are combined (see the last output paragraph)

我使用以下行测试了它们:

s.sh A B="       " C

s.sh

#!/bin/bash

args=$@
args2="$@"
#args3 = ? - TODO

echo $args
echo $args2
echo $@
#echo $args3

echo

echo "$args"
echo "$args2"
echo "$@"
#echo "$args3"

echo

java A $args
java A $args2
java A $@
#java A $args3

echo

java A "$args"
java A "$args2"
java A "$@"
#java A "$args3"

A.java

import java.util.Arrays;

public class A {
public static void main(String args[]){
System.out.println(args.length + ": " + Arrays.asList(args));
}
}

实际输出:

A B= C
A B= C
A B= C

A B= C
A B= C
A B= C

3: [A, B=, C]
3: [A, B=, C]
3: [A, B=, C]

1: [A B= C]
1: [A B= C]
3: [A, B= , C]

预期输出(如果 TODO 被解决方案替换)并且启用了 echo

A B= C
A B= C
A B= C
A B= C

A B= C
A B= C
A B= C
A B= C

3: [A, B=, C]
3: [A, B=, C]
3: [A, B=, C]
3: [A, B=, C]

1: [A B= C]
1: [A B= C]
3: [A, B= , C]
3: [A, B= , C]

最佳答案

你可以把它存储在一个数组中:

args=("$@")

然后您可以使用索引访问每个参数:"${args[index]}"和所有的参数一次"${args[@]}" .

关于bash - 将 Bash 脚本参数 $@ 存储在变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30436869/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com