1

我正在编写一个 Bash 脚本来设置一些环境变量,然后启动一个 Web 服务器。有哪些好的验证检查可以添加到脚本中,以确保它尽可能地是失败证明:

  1 #!/bin/bash
  2 
  3 # Allow checking that variables don't get set to empty strings.
  4 set -o nounset
  5 
  6 readonly qi_redmine_base="/srv/redmine"
  7 
  8 if test "${qi_redmine_base}" -eq "notset"
  9 then
 10 »···echo
 11 fi
 12 
 13 readonly qi_redmine_etc="/etc/redmine/default"
 14 
 15 if test "${qi_redmine_etc}" -eq "notset"
 16 then
 17 »···echo
 18 fi
 19 
 20 
 21 readonly RAILS_ETC="${qi_redmine_etc}"
 22 export RAILS_ETC
 23 
 24 readonly RAILS_LOG="${qi_redmine_base}/log"
 25 export RAILS_LOG
 26 
 27 readonly RAILS_VAR="${qi_redmine_base}"
 28 export RAILS_VAR
 29 
 30 readonly RAILS_CACHE="${qi_redmine_base}/tmp"
 31 export RAILS_CACHE
 32 
 33 export RAILS_ENV=production
 34 export X_DEBIAN_SITEID=default
 35 
 36 
 37 ruby /usr/share/redmine/script/server webrick -e production
 38 if [$? -ne 0]; then
 39   echo "Server failed to start"
 40 fi

任何帮助是极大的赞赏!

格雷格

4

1 回答 1

2
help test 

显示了字符串(长度> 0)和未定义变量的一些可能的测试机会。

甚至还有一个定义默认值的结构:

   ${parameter:-word}
          Use  Default  Values.   If  parameter is unset or null, the expansion of word is
          substituted.  Otherwise, the value of parameter is substituted.
   ${parameter:=word}
          Assign Default Values.  If parameter is unset or null, the expansion of word  is
          assigned  to parameter.  The value of parameter is then substituted.  Positional
          parameters and special parameters may not be assigned to in this way.
   ${parameter:?word}
          Display Error if Null or Unset.  If parameter is null or unset, the expansion of
          word  (or  a  message  to  that effect if word is not present) is written to the
          standard error and the shell, if it is not interactive, exits.   Otherwise,  the
          value of parameter is substituted.
   ${parameter:+word}
          Use  Alternate  Value.   If  parameter is null or unset, nothing is substituted,
          otherwise the expansion of word is substituted.

(引用man bash)。

通常,您需要解决停机问题才能完成任务。

于 2012-05-07T14:05:12.740 回答