我想在执行时在脚本中传递变量
前任: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
(手册页), 或者getopts
(POSIX,bash-hackers.org 中的教程)。
无论如何,强大的脚本必须处理某些变量丢失(未设置)的情况。
答案2
您可以通过以下方式执行此操作(仅适用于本次执行):
id=3 sh abc.sh
答案3
在执行之前声明(或导出,这里不是必需的):
id=3 ./myScript.sh
myScript.sh:
#!/bin/bash
echo "id = $id"
输出:
id = 3