さまざまな環境変数を設定し、プログラムを実行するBashスクリプトがあります。引数を使用してコマンドを実行すると、変数の1つが変更されるようになりますdebug
。
私はLuaコードでこれを行う方法を100%知っていますが、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