スクリプトを使用して以下を達成しようとしましたが、成功しませんでした。
変数値が指定された場合は、追加のステップで使用されます。それ以外の場合は、スクリプトの書き込みをファイルに実行する値をエクスポートし、追加の手順に使用します。
#!/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
注 - 声明の;
前then
とfi
最後にif
。
コマンドの出力を変数に保存するには、$(...)
上記のように使用します。
使用住宅検査シェルスクリプトを確認してください。