如何改变脚本中参数的值?

如何改变脚本中参数的值?

我尝试了以下简单的小脚本:

#!/bin/bash
$1="bar"
echo $1

但是当我运行时./script foo出现错误并且值没有改变:

/home/mika/script: line 2: foo=bar: command not found
foo

我知道 $1 是你传递给脚本的第一个参数。但即便如此,我也想改变它的值。

答案1

您可以使用内置函数set

#!/bin/bash
set -- "bar"
echo $1

来源及更多信息:更改命令行参数 - bash

答案2

您不能直接更改这些变量。您可以说:

x=$1
echo $x

$x然后你可以使用

使用$1=bar将立即用第一个参数替换$1,并且您实际上是在陈述"foo=bar",并且它被解释为命令“foo”,而不是变量“foo”;

答案3

不要使用$1这个,在bash和其他 shell 中,$1这是传递给脚本的第一个参数:

#!/bin/bash
echo $1

如果你将上述代码作为 运行foo.sh hello,它将打印,hello因为这是第一个参数。此外,你可以将变量作为 引用,var也可以将变量作为内容因此$var,为了获得您期望的行为,只需对变量使用另一个名称,并且不要使用$

#!/bin/bash
var="bar"
echo $var

答案4

作为主要答案来自@Radu Rădeanu,您可以一次设置多个参数,如下所示:

# set arguments `$1`, `$2`, and `$3` to these respective values
set -- "one" "two" "three"
echo "$1 $2 $3"

输出:

one two three

也可以看看

  1. 我在 Stack Overflow 上的详细回答如下:如何使用 bash 中的命令行参数$1、等进行更改$2set --
    1. 我会更进一步解释更多内容,包括使用 bash 数组切片来保留更改参数前后的原始参数。查看以了解更多信息。

相关内容