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

Vin*_*nod 7 shell-script environment-variables

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

前任: sh abc.sh export id=3

ilk*_*chu 10

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

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

$ foo=bar ./foo.sh
bar

$ export foo=bar
$ ./foo.sh
bar
Run Code Online (Sandbox Code Playgroud)

但更常见的成语是使用命令行参数,它们会设置位置参数$1$2等等。

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

$ ./arg.sh alpha beta
alpha and beta
Run Code Online (Sandbox Code Playgroud)

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

在任何情况下,一个健壮的脚本都必须处理某些变量丢失(未设置)的情况。


Rom*_*nov 6

您可以通过以下方式执行此操作(仅针对此执行):

id=3 sh abc.sh 
Run Code Online (Sandbox Code Playgroud)