- - PR -
bシェルのechoでファイルを選択したい
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-11-29 10:44
中村と申します。
Unix SunOS5.6,Oracle8.0.4の実行環境です。 bシェルであるディレクトリのファイルを選択できるようにechoにて表示したいのですが、cシェルでは出来たのですが、bシェルでやりたいのですが、ほとんどわからない状況です。以下にcシェルにて出来たコーディングを記述します。以下のcシェルの内容がbシェルで出来れば最高です。 set dir="/export/home/ cd $dir/ set list = `ls -l $dir` set flist = "" @ i = 0 foreach file($list) ←この部分から下のendまでがわかりません。 if ( -f $dir/$file ) then set flist = ($flist $file) @ i += 1 echo "処理番号 $i: $file" endif end echo -n "処理番号を選択してください:" set ShoriNo = $< | ||||
|
投稿日時: 2005-11-29 14:55
ちょっと、実行環境が無いんで些細なエラーは修正を (プ | ||||
|
投稿日時: 2005-11-29 20:04
コブラさん、レス遅くなってすみません。
コブラさんのご指摘いただいたとおりにやってみましたら 出来ました。ありがとうございました。 | ||||
|
投稿日時: 2005-11-30 05:06
>flist="$flist $arg"
結局、これは何の役にも立ってないっちゅぅこって (プ | ||||
|
投稿日時: 2005-11-30 09:03
コブラさん、全て役に立ちました。ありがとうございました。
flist="$flist $arg" の部分もとても役立ちました。 ありがとうございました。 | ||||
|
投稿日時: 2005-11-30 09:59
マジで?
| ||||
|
投稿日時: 2005-11-30 10:07
パイプでつないじゃう手もありますね。
これなら空白を含んだファイル名があっても大丈夫。 (その場合は flist の中身が使えなくなりますが) ------------------------------------------------------------------ #!/bin/sh dir="/export/home/" cd "$dir" flist="" i=0 ls -1 "$dir" | while read file ; do if [ -f "$file" ]; then flist="$flist $file" i=`expr $i + 1` echo "処理番号 $i: $file" fi done echo "処理番号を選択してください:¥c" read ShoriNo ------------------------------------------------------------------ System V 系のシェルでは echo の『-n』は効きません。 代わりに末尾に『¥c』をつけます。 (『¥』は半角のバックスラッシュに置き替えてください) あと、ksh なら『i=`expr $i + 1`』を『let i=i+1』とする手もアリ。 | ||||
|
投稿日時: 2005-11-30 10:39
portulacaさん、レスありがとうございます。
Unix SunOS5.6でのbシェルでは\cが効いて、改行しなくなりました。 本当に助かりました。それで、Miracle Linux Standard Edition V2.0 (Styrax)で\cをつけて実行してみたのですが、改行されてしまいました。 Unixでは出来て、Linuxではできないとういうことがあるのでしょうか? シェルは同じbシェルを使っているのですが。。。。以下にコーディングを記します。 #!/bin/sh echo '処理番号を入力して下さい:\c'; read no case $no in 1) /home/nkdse/A.sh;; 2) /home/nkdse/B.sh;; 3) /home/nkdse/C.sh;; *) exit 0;; esac exit 0 ってこんな感じで同じことをUnix、Linuxでもやっているのですが。。。。 よろしくお願いします。 |