0

私はRubyを初めて使用し、次のようなスクリプトを作成しています。

  1. コマンドライン引数を受け入れます
  2. 引数の指定に基づいて、いくつかのディレクトリを削除します。

私がしたいこと:

./admin_bin -c
Removing files in /opt/sysnovo/tmp and /opt/sysnovo/data

私はこれを機能させています!しかし...それはルビーっぽい方法ではありません。

これが私のコードです:

#!/usr/bin/env ruby
require 'rubygems'
require 'fileutils'
require 'optparse'


OptionParser.new do |o|
    o.on('-c') { |b| $clear = b }
    o.on('-h') { puts o; exit }
    o.parse!
end

# Two directories we want to specify.
tmp_dir = "/opt/sysnovo/tmp"
data_dir = "/opt/sysnovo/data"

# push this value to a variable so we can evaluate it.
test = $clear

if "#{test}" == "true"
    puts "Removing files in #{tmp_dir} and #{data_dir}"
    FileUtils.rm_rf("#{tmp_dir}/.", secure: true)
    FileUtils.rm_rf("#{data_dir}/.", secure: true)
else
    puts "Not removing files."
end

ご覧のとおり、$ clearを#{test}に設定し、それに基づいて評価します。私はそれが正しくないことを知っています。これを行う正しい方法は何ですか?このスクリプトには、後で引数と機能を追加する予定です。

PS私はbashのバックグラウンドから来ました。

4

1 に答える 1

0

オプションパーサーは、True/Falseクラスを使用してフラグを設定します。テストは次のようになります。

$clear.class=>TrueClassを実行する場合。それはブールです。

#!/usr/bin/env ruby
require 'fileutils'
require 'optparse'


OptionParser.new do |o|
    o.on('-c') { |b| $clear = b }
    o.on('-h') { puts o; exit }
    o.parse!
end

# Two directories we want to specify.
tmp_dir = "/opt/sysnovo/tmp"
data_dir = "/opt/sysnovo/data"

# push this value to a variable so we can evaluate it.

if $clear
    puts "Removing files in #{tmp_dir} and #{data_dir}"
    FileUtils.rm_rf("#{tmp_dir}/.", secure: true)
    FileUtils.rm_rf("#{data_dir}/.", secure: true)
else
    puts "Not removing files."
end

require 'rubygems'また、ruby<1.9を使用している場合にのみ必要です。

于 2012-07-24T15:14:13.177 に答える