bash 脚本的可选命令

bash 脚本的可选命令

我有一个 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,如果不是字符串debugexport则为环境var1变量。

由于脚本(如上所述)不使用任何特定功能,因此可以选择将-#!行更改为。#!/bin/shbash


上述的变体,它对数组的处理方式有所不同,而无需在脚本本身中实际设置变量(仅适用于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

相关内容