2

ファイルが存在するかどうかを確認し、利用できない場合は作成するコマンドを以下に示します。

if test "${LOG_FILE:=}x" != "x"; then
    touch $LOGAP
    exit_code=$?
fi

このスクリプトを理解するのを手伝ってください"${LOG_FILE:=}x" != "x"。exixts かどうかをチェックするためにテスト条件がどのように使用されるかを教えてください。私はbashシェルを使用しています。

4

1 に答える 1

4

基本的な考え方スクリプトは、変数が設定されている
かどうかをチェックします。$LOG_FILEそうであれば、 に保存されている名前のファイルに触れます$LOGAP

説明
分割してみましょう:

test == if

そう

if test "${LOG_FILE:=}x" != "x"; then

と同じです

if [ "${LOG_FILE:=}x" != "x" ]; then

1 つのテストを行いましょう。

LOG_FILE="FILE_TEST"
echo "${LOG_FILE:=}x"

出力します

FILE_TESTx

したがって、変数LOG_FILEが設定されているかどうかのチェックが行われます。設定されている場合、

[ "${LOG_FILE:=}x" != "x" ]

になります

[ "FILE_TESTx" != "x" ]

これは本当です。

LOG_FILEが設定されていない場合、

[ "${LOG_FILE:=}x" != "x" ]

になります

[ "x" != "x" ]

これは誤りです。

つまり、x何かを始めることです。あなたはそれをに変更することができます

[ "${LOG_FILE:=}HELLO_MY_NAME_IS_BLABLA" != "HELLO_MY_NAME_IS_BLABLA" ]

最後に、あなたは

touch $LOGAP

これはtouch(ファイルが作成されていない場合は作成し、既に存在する場合は変更日を更新します)。また、変数$LOGAPを設定する必要があります。


ファイルが存在するかどうかを確認する最速の方法は次のとおりです。

if [ ! -f /tmp/foo.txt ]; then
 ...
fi
于 2013-03-29T13:27:43.630 に答える