指定された変数を使用するか、それ以外の場合は派生して使用します。

指定された変数を使用するか、それ以外の場合は派生して使用します。

スクリプトを使用して以下を達成しようとしましたが、成功しませんでした。

変数値が指定された場合は、追加のステップで使用されます。それ以外の場合は、スクリプトの書き込みをファイルに実行する値をエクスポートし、追加の手順に使用します。

#!/bin/bash
if [[ -z "$VER" ]] then
echo "VER not provided; Deriving value from INT"
./get_ver.rb > VER      
endif
echo "VER=$VER" > VER

答え1

いくつかの一般的な慣用語(すべてのPOSIXシェルでは、bashスクリプトでも安全に使用できるだけでなく):sh

VER=${VER-$(./get_ver.rb)}

または:

: "${VER=$(./get_ver.rb)}"

${VER-value}$VER設定されている場合$VER(Nullまで)何でも拡張し、それ以外の場合はvalue別のものに拡張します。

${VER=value}:同じですが、以前valueに設定されていない$VER条件にも割り当てられます。$VER

[[ -z $VER ]]コンテンツが設定されている$VERのではなく、空であることを確認することです$VER。設定されている$VERが空の場合はまだtrueを返します。設定されていることを確認できます[ -z "${VER+yes}" ](ここではKorn設定の[代わりに標準コマンドを使用しますが、[[...]]使用することもできます)。もう一つのあまり明確な方法は 。[[...]]$VER${VER+:} false

答え2

スクリプトに複数の構文エラーがあります。

これは修正版です。

#!/bin/bash
if [[ -z "$VER" ]]; then
  echo "VER not provided; Deriving value from INT"
  VER="$( ./get_ver.rb )"
fi
echo "VER=$VER" >VER

注 - 声明の;thenfi最後にif

コマンドの出力を変数に保存するには、$(...)上記のように使用します。

使用住宅検査シェルスクリプトを確認してください。

関連情報