执行 abc.sh 时如何通过终端在脚本中传递变量

执行 abc.sh 时如何通过终端在脚本中传递变量

我想在执行时在脚本中传递变量

前任:sh abc.sh export id=3

答案1

导出的变量和在同一命令行上设置的变量对程序可见:

$ cat foo.sh
#!/bin/sh
echo "$foo"

$ foo=bar ./foo.sh
bar

$ export foo=bar
$ ./foo.sh
bar

但更常见的习惯用法是使用命令行参数,它们被设置为位置参数$1$2等等。

$ cat arg.sh
#!/bin/sh
echo "$1 and $2"

$ ./arg.sh alpha beta
alpha and beta

或者使用"$@"来获取所有命令行参数,可能是在使用shift从一开始就删除一些固定参数之后。对于命名参数,最好使用getopt(手册页), 或者getoptsPOSIX,bash-hackers.org 中的教程)。

无论如何,强大的脚本必须处理某些变量丢失(未设置)的情况。

答案2

您可以通过以下方式执行此操作(仅适用于本次执行):

id=3 sh abc.sh 

答案3

在执行之前声明(或导出,这里不是必需的):

id=3 ./myScript.sh

myScript.sh:

#!/bin/bash

echo "id = $id"

输出:

id = 3

相关内容