我有一个 Bash 脚本,用于设置各种环境变量并运行程序。如果我使用参数运行命令,我希望更改其中一个变量debug
。
我 100% 知道如何在 Lua 代码中执行此操作,但 Bash 不是 Lua,我仍处于学习它的早期阶段。
本质上,当我运行./foo.sh
它时
export var1
export var2
export var3
program
我想要它不是var1
如果我跑就通过./foo.sh debug
答案1
改变
#!/bin/bash
export var1="value1"
export var2="value2"
export var3="value3"
program
进入
#!/bin/bash
if [ "$1" != "debug" ]; then
export var1="value1"
fi
export var2="value2"
export var3="value3"
program
脚本的第一个命令行参数将在 中可用$1
,如果不是字符串debug
,export
则为环境var1
变量。
由于脚本(如上所述)不使用任何特定功能,因此可以选择将-#!
行更改为。#!/bin/sh
bash
上述的变体,它对数组的处理方式有所不同,而无需在脚本本身中实际设置变量(仅适用于program
启动脚本时):
#!/bin/bash
if [ "$1" != "debug" ]; then
vars=( var1="value1" )
fi
vars+=( var2="value2" var3="value3" )
env "${vars[@]}" program
或者,对于/bin/sh
,
#!/bin/sh
mode=$1
set -- var2="value2" var3="value3"
if [ "$mode" != "debug" ]; then
set -- var1="value1" "$@"
fi
env "$@" program