前提・実現したいこと
以下のシェルスクリプトのconfirm関数だけをzenityコマンドを用いて書き換え,
2のものと同じようなものにしたいのですがうまくいきません。。。
自分で解いていても全然正解に近づいている感覚がなく、載せるほどの物ができなかったので
実現したいことだけ書かせていただきます。
書き換えたいシェルスクリプト
#!/bin/sh confirm(){ echo -n "$1(Y/N) " >&2 read YN case "$YN" in [Yy]*) return 0;; *) return 1;; esac } if confirm "$1から$1.bakへコピーしますか"; then cp "$1" "$1.bak" else echo 中止しました >&2 fi
2
#!/bin/sh confirm(){ # Ruby言語のスクリプトを使い、画面上でユーザに確認を取るシェル関数 # このシェル関数への第1引数をメッセージとしてウィンドウに表示し、 # ユーザがYesボタンを押せばこのシェル関数は真を、Noボタンなら偽を返す ruby -e ’ # Tkライブラリを使う旨の宣言 require "tk" # ルートフレーム(一番外側の枠)を生成。タイトルは"Confirm"に固定 root = TkRoot.new("title" => "Confirm") # メッセージ用ウィジェットを生成 msg = TkMessage.new(root, "text" => ARGV[0], # rubyへの第1引数がメッセージ "justify" => "center", "width" => 160, "font" => "-*-fixed-medium-r-normal--16-*") msg.pack("pady" => 10) # YesとNoのボタンウィジェットを生成 yes = TkButton.new(root, "text" => "Yes", "command" => proc{exit 0}) no = TkButton.new(root, "text" => "No", "command" => proc{exit 1}) # (注1) yes.pack("pady" => 10, "padx" => 10, "side" => "right")
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。