Bashスクリプトのオプションコマンド

Bashスクリプトのオプションコマンド

さまざまな環境変数を設定し、プログラムを実行する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/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

関連情報