• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:BASHの入力待ち)

BASHプログラムで連続的に画像を表示し、キーボードで操作する方法

このQ&Aのポイント
  • fig_0.gif~fig_30.gifの30個の絵をdisplayコマンドで表示させるbashプログラムを作成しました。
  • キーボードでEnterを押すと次の絵に移動するようにしたいですが、現在のプログラムではdisplayのウィンドウがアクティブになります。
  • キーボード入力で次へ進むためには端末をクリックする必要がありますが、端末をアクティブにする方法はありますか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#208507
noname#208507
回答No.1

端末をアクティブにする方法ではありませんが,下のスクリプトを使うとdisplayで画像を切り替えることができます.displayのウィンドウをアクティブにしたまま,キーボードからスペースキー入力で次の画像に進みます. #!/bin/bash rm -f tmp.$$.ppm for F in *.gif do convert $F ${F%.gif}.$$.ppm done cat *.$$.ppm > tmp.$$.ppm display tmp.$$.ppm for F in *.gif do rm -f ${F%.gif}.$$.ppm done rm -f tmp.$$.ppm

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • bashでのif文内正規表現についての

    bashでのif文内正規表現についての質問です。 IPアドレスを正規表現にてマッチングさせたいのですが実現できなく困っています。 たとえば192.168.1.の1から128を引っ掛けたいのですがどうすれば実現できますか? 今は下記のように書いていますが、これではだめみたいです。 ARCHKIP=`netstat -rn | awk '{ print $1 }'` for i in `echo $ARCHKIP` do if [[ $i = 192.168.1.[1-128] ]];then echo "OK" fi done わかる方お教えください。

  • bashスクリプトでの配列参照

    bashスクリプトでの質問です。 配列を、ループ文で順に参照しようとしているのですが、 要素を変数で記述すると、うまく参照できなく困っております。 ---------------------------------------------- i=0 j=10 while $i -le $j do echo "${hoge[$i]} ${huga[$i]}" i=`expr $i + 1` done ----------------------------------------------- こんな感じの、スクリプトなのです。 要素を直接記述すると、ちゃんと中身を参照することができました。 やりたいことは、二つの配列の同じ要素の中身を、連結して表示するといったものです。 ご教授よろしくお願いします。

  • bashスクリプトについて

    #!/usr/local/bin/bash など1行目に書いてbashのスクリプトを作成したいのですが、 計算式を作りたいのですができないものでしょうか? たとえばe2pという名前で ###----------------### echo "script test" $i=1 printf $i ###----------------### として、./e2pと実行しても、script test は表示されても、以下二行はエラー ./e2p: =1: command not found ./e2p: print: command not found となって表示されませんでした。 どのようにすれば、 $a=1 $b=3 print $a+b などいったことができるのでしょうか? また、根底から間違っている気もします・・・どのようにすればよろしいでしょうか?

  • 一行でdoループ

    debian wheezy で 一行でdoループをやろうとしたのですが、失敗します。 $ for i in {1..2} ; do ; pwd ; done bash: 予期しないトークン `;' 周辺に構文エラーがあります $ echo $SHELL /bin/bash $ echo $BASH_VERSION 4.2.37(1)-release なぜうまくいかないのでしょうか? 教えてください。 よろしくお願いします。

  • bashシェル: 引用符で囲まない文字列

    bashシェルにおいて、パスを表す文字列を引用符で囲まないで変数に代入すると絶対パスに展開されて代入されます。 引用符で囲んで代入すると展開されませんので、「パスを変数に代入する時は引用符で囲まない」と覚えておけばよいように思いますが、「引用符で囲まない文字列はパスを表す」ということなのでしょうか。 (引用符で囲んだ場合) $ DIR="~/" $ echo $DIR ~/ (次のようにしてもディレクトリ下のファイル名を得られない) for FILE in ${DIR}* ; do echo ${FILE}; done (引用符で囲まない場合) $ DIR=~/ $ echo $DIR /home/taro/ 2014年9月23日

  • bashに詳しい方、教えて下さい![Shellプログラミングの質問です]

    下記のプログラムをkshで書いたのですが、これをbashに書き換えなくてはならなくなりました。kshならある程度分かるのですが、bashは全然経験が無いため困っています。bashに詳しい方、大変お手数で馬鹿な質問で恐縮ですが、どう書き換えたらbashで動くのか、ご教授願いたいと思います。 *シェルを実行したら、入力プロンプトが返ってきて、適当に入力していって、Enter keyを2回押すと、今まで入力したものが表示され、終了する。といった仕様です。 $ cat mtest #!/bin/ksh myvar=kjsdkdck i=0 while [[ -n $myvar ]] do read myvar?"Enter junk, return to exit: " myarray[$i]=$myvar (( i += 1 )) done j=0 h=1 while [[ -n ${myarray[$j]} ]] do print $h ${myarray[$j]} (( j += 1 )) (( h += 1 )) done $mtest Enter junk, return to exit: test1 Enter junk, return to exit: test2 Enter junk, return to exit: test3 Enter junk, return to exit: 1 test1 2 test2 3 test3 $

  • bashに詳しい方、shellプログラムについて質問があります。

    下記のプログラムをkshで書いたのですが、これをbashに書き換えなくてはならなくなりました。kshならある程度分かるのですが、bashは全然経験が無いため困っています。bashに詳しい方、大変お手数で馬鹿な質問で恐縮ですが、どう書き換えたらbashで動くのか、ご教授願いたいと思います。 *array commandを利用して、menuを起動します。メニュー番号を選択すると、そのメニュー番号に応じたコマンドが実行される。といった仕様です。 #!/bin/ksh set -A myarray1 " 0 Today's date"\ " 1 Who is on the System?"\ " 2 System uptime"\ " 3 System utilization"\ " 4 System utilization"\ " 5 Exit" set -A myarray2 date who uptime vmstat "df -k" exit while : do print "\n MENU OF OPTIONS" for i in 0 1 2 3 3 4 5 do print "${myarray1[$i]}" done print -n "Enter 0 1, 2, 3, 4, or 5: " read num print ${myarray2[$num]} done $ お忙しい中大変恐縮ですがよろしくお願い致します。

  • bashで配列の個数部分を変数で指定するとエラーに

    bashで配列の個数部分を変数で指定するとエラーになってしまいます。 #!/bin/bash aa[0]="a0" aa[1]="a1" aa[2]="a2" bb[0]="b0" bb[1]="b1" bb[2]="b2" bb[3]="b3" cc[0]="c0" cc[1]="c1" cc[2]="c2" cc[3]="c3" cc[4]="c4" list=(aa bb cc) for i in ${list[@]} do eval echo "$i=\${#$i[*]}" n="\${#$i[*]}" mes="\${$i[$(( ${RANDOM} * 3 / 32768 ))]}" eval echo "$mes \${$i[$(( ${RANDOM} * 3 / 32768 ))]}" done $ . list-test.sh aa=3 a1 a2 bb=4 b2 b2 cc=5 c0 c2 上記の下記箇所の「各配列の個数部分の3」をイメージ的には変数で指定したいです。 mes="\${$i[$(( ${RANDOM} * 3 / 32768 ))]}" ↓ mes="\${$i[$(( ${RANDOM} * $n / 32768 ))]}" $nのように指定すると、下記のエラーになってしまいます。 >bash: 29205 * ${#aa[*]} / 32768 : 構文エラー: オペランドが予期されます (エラーのあるトークンは "${#aa[*]} / 32768 ") ${n}や\$nや($n)など色々試してみたのですが、解決できませんでした。 恥ずかしながら、どなた様かご教授ねがえませんでしょうか

  • shellスクリプトに複数の引数を渡したい

    shellスクリプトに複数の引数を渡したいと考えています。 下記のようなperlスクリプトを兼ねる事でやりたいことは達成できました。 これをシェルスクリプトだけでやろうとしていて、ハマってしまい、やり方がわからなかったので、質問しています。 ・echo.shの中身 $ cat echo.sh echo $1 $2 ・imglist.plの中身 $ cat imglist.pl my@imglist= `ls -1 *{.gif,.bmp,.jpg,.jpeg,.png} 2>1&`; foreach(@imglist){ my@name=split /\./,$_; system("bash ./echo.sh $name[0] $name[1]"); } ・実行すると、無事echo.shに引数が2つ渡る。 $ perl imglist.pl abc1 jpg abc10 png abc11 png abc2 jpg abc3 jpg これをシェルのみでやろうとして、はまってしまいました。 以下は、パイプ処理等を使ったりしてやってみたのですが出来ませんでした。 ・awkでファイル名と拡張子に分解し、パイプで渡そうとしても何故か渡らない・・ $ ls -1 *{.gif,.bmp,.jpg,.jpeg,.png} | awk -F . '{print $1,$2}'| bash ./echo.sh ・ファイルに一旦保存し、catコマンドでパイプで渡しても駄目 $ ls -1 *{.gif,.bmp,.jpg,.jpeg,.png} | awk -F . '{print $1,$2}' > imglist.txt $ cat imglist.txt | bash ./echo.sh ・echoコマンドを使ってパイプで渡しても駄目 $ echo `cat imglist.txt` |bash ./echo.sh ・for.shというファイルを作成し、for構文でimglist.txtの中身を渡すと引数が一つずつしか渡らない $ cat for.sh for id in $(cat imglist.txt); do echo $id done $ bash for.sh tile1 jpg tile10 jpg どうやれば、コマンドライン上やシェルスクリプトだけで、今回はファイル名と拡張子という形で複数行からなる2つの引数を渡すことができますでしょうか

    • ベストアンサー
    • Perl
  • シェルスクリプトでのmysqlコマンド実行

    いつもお世話になっております。 MYSQLで、データベースの一覧を出力し それを上から順にテーブル作成をしたいと考えています。 source コマンドで、ファイルを読み込んで実行したいのですが、 2つ目のfor文に上手く変数を渡せません。 'source $var_ファイル_$i.sql'` ↑これに変数が上手く渡りません。 そのままの値になってしまいます。 どうにか渡す方法はないでしょうか。 #!bin/bash var=`hostname -a` for i in `mysql -u root -p -e 'show databases'` do for (( cnt = 0; cnt < 11; cnt++ )) do echo $var echo $i `mysql -u root -p $i -e 'source $var_ファイル_$i.sql'` 1>> $var_ファイル_$i.log 2>&1 echo "$cnt 回目の処理" done done exit 0