シェルスクリプト総合 ..
456:login:Penguin
09/11/07 00:24:25 27rGR1FA
>>455
配列の話をしているからbash前提で話すが、
・zenityが返す値(URL)を""でエスケープしておかないと、URLにスペースが含まれていたときにハマる。
・単純に5回繰り返すだけならwhileとカウンタを使うよりもforを使ったほうがいい。
for i in {1..5}; do [処理]; done
for i in `seq 5`; do [処理]; done
457:login:Penguin
09/11/07 01:39:27 CteOVE+c
>>456
なるほど。わざとスペースを入れて試してみました。
単純に5回繰り返すつもりなので、アドバイス通りにfor文でもやってみたいとおもいます。
>>454 >>456
どうもありがとうございました。
458:login:Penguin
09/11/11 00:08:25 ISVpZi0Z
bashの配列なのですが
# ls
お宝動画 有名女優の秘部大百科
というファイルがあって
files=(`ls`)
echo "${files[0]}"
とすると「お宝動画」しか表示されませんよね
これをちゃんとしたファイル名、空白を含む値を代入するには
どうすればいいのでしょうか?
459:login:Penguin
09/11/11 10:05:24 FBEaA7LT
>>458
IFSがデフォで空白・タブ・改行になってると思うので
IFSから空白を除く
460:login:Penguin
09/11/11 13:32:06 OlX5y2f2
そのファイル名の部分をもっと当たり障りの無いファイル名に変えて書けよww
461:login:Penguin
09/11/11 19:26:47 h7rzLTxQ
Bachで条件付バックアップスクリプトを組みたいのですが
どう書いて良い物か分からなくなってしまったのでご教授
お願いします。
< やりたい事 >
任意のフォルダ配下でタイムスタンプがN日経過したものをtar.gzで
圧縮して、そのファイルを削除したい。
たとえば、/home配下に test1・test2・test3と言う3つのフォルダがあって
最終アクセス(ファイル操作)が30日以前のファイルを/home/backupに
タイムスタンプ.tar.gz形式で保存し、バックアップ後そのファイルを削除する。
test1フォルダ内
-rw-rw-r-- 1 root root 10K 10月 09 00:00 /home/test1/hoge.txt
-rw-rw-r-- 1 root root 10K 10月 10 00:00 /home/test1/higetxt
tes21フォルダ内
-rw-rw-r-- 1 root root 10K 10月 11 00:00 /home/test2/hoge.txt
-rw-rw-r-- 1 root root 10K 11月 01 00:00 /home/test2/higetxt
test3フォルダ内
-rw-rw-r-- 1 root root 10K 11月 09 00:00 /home/test3/hoge.txt
-rw-rw-r-- 1 root root 10K 11月 11 00:00 /home/test3/higetxt
n日後のファイルを検索するところまで調べて下記のようなコマンドを
使うのだろうと思っているのですが、それ以降どうしてよいものか・・・・。
find /home -type f -daystart -mtime +30 |fgrep -v /.
長くなりましたがご教授お願いします。
462:login:Penguin
09/11/12 00:26:46 VaDsQREP
教授は外出中です
463:login:Penguin
09/11/12 00:42:44 MDFmvAz9
バッハねぇ。
464:login:Penguin
09/11/12 23:09:37 ou+qWNnh
>>461
TARGET=`find /home -type f -daystart -mtime +30 |fgrep -v /. `
tar cvzf `date +%Y%m%d`.tar.gz $TARGET && rm $TARGET
465:login:Penguin
09/11/13 10:24:58 WdvDAtlm
>>464
有難う御座います。
やってみます!
466:login:Penguin
09/11/13 11:55:23 YoLOfEvP
test=/var/www/.htaccess-log
という風にしても-logのみが認識されているようでうまく機能しません。
最初に.がある場合のファイルを変数に入れるにはどうすればいいのでしょうか?
467:login:Penguin
09/11/13 11:58:11 U8ZA18uC
$ test=/var/www/.htaccess-log
$ echo $test
/var/www/.htaccess-log
$
認識してるが。
468:466
09/11/13 12:09:11 YoLOfEvP
>>467
すいません。
testの部分がtest-logでした。
$ test-log=/var/www/.htaccess-log
$ echo $test-log
-log
となります。
申し訳ないです。
469:login:Penguin
09/11/13 12:33:52 veh/HZx5
>>468
変数名に-(ハイフン)は使えないと思ったが
470:466
09/11/13 12:45:36 YoLOfEvP
>>469
すいません。
そうなんですか。
最近WEB関連からシェル叩くことがあって作ってたんですがシェルでは変数にハイフン使えないんですね。
修正したらうまくいきました。
ありがとうございます。
471:login:Penguin
09/11/13 15:23:15 mmBbeV5d
区切りたいなら _ 使え。
472:login:Penguin
09/11/13 20:07:30 csbg7Gm/
>>466
>>5
>・思い通りに動かないときは、まずは sh -x でトレースしましょう。
473:login:Penguin
09/12/07 12:06:33 XdJnANaN
[ string ] と、[ -n string ] の違いについてお尋ねします。
[ $(cat /dev/null) ] が偽になるのに対して、[ -n $(cat /dev/null) ] は真になってしまうのですが、何が違うのでしょうか。
[ -z $(cat /dev/null) ] は真になるので、なんだか -nだけが仲間外れな気がします。
474:login:Penguin
09/12/07 13:25:47 OGpjrFHy
>>473
それだと $(cat /dev/null) が消えて引き数がなくなって
[ ]
[ -n ]
[ -z ]
になる。
なんでそういう挙動になるかは bash の test.c でも読んでもらうとして、
その挙動を避けるには
[ "" ]
[ -n "" ]
[ -z "" ]
にすればいい。
475:473
09/12/07 13:46:33 5UzhKh29
>>474
なるほど納得です。
そう言えば変数が空文字列になってしまう場合を考慮してクォートしろと聞いた記憶があるような気がします。
素早いお返事ありがとうございました。ソースもあとで読んでおきます。
476:login:Penguin
09/12/13 00:31:23 h59G/AZL
よくダウンロードとかすると何%まで完了してるかみたいなのを
動的に出力するのってどうやんの?
477:login:Penguin
09/12/13 01:45:44 k2yGj3y5
普通に wget でいいんじゃない?
478:476
09/12/13 02:23:19 h59G/AZL
>>477
ダウンロードに限らず
yumとかbuildするときに%を示す数値が動的に変わっていくじゃないですか。
あれ、どうやって実装してんのかなぁと。
誰かわかる?
479:login:Penguin
09/12/13 02:27:41 /qP8xinl
yumってpythonだっけか
そういうライブラリがあるんでないの
シェルスクリプトでやりたいならこういうのがある
URLリンク(www.theiling.de)
480:login:Penguin
09/12/13 03:38:56 s0ebrxv6
>>478
バックスペースを然るべき回数売って表示し直し
481:login:Penguin
09/12/13 11:14:43 45+rg1Ww
画面制御の話題だったの?
このスレ的には tput あたりでやるのが正しいのだろうか。
482:login:Penguin
09/12/13 11:23:29 1bGElD/p
>>478
$ man console_codes
483:login:Penguin
09/12/13 11:50:06 k2yGj3y5
このスレ的には dialog とか whiptail じゃないの。
484:login:Penguin
09/12/13 18:57:54 7EV0TAof
普通の文章を書いた平文テキストをxtermに関連付けして開くと
実行権もないのにxtermがいくつも開いてフリーズします。
なぜですか?
485:login:Penguin
09/12/13 19:25:45 VEJMKGLd
「関連付けして開く」ってどういう概念?
486:login:Penguin
09/12/13 19:31:32 7EV0TAof
普通は表示とか端末で実行とか聞かれるので、右クリメニューに入れました
487:login:Penguin
09/12/13 19:38:48 8kXkcLfR
Ubuntu使ってるの?
488:login:Penguin
09/12/13 22:54:17 u+Xt7Oyd
>>486
ごめん。尋ねておいて悪いけど、
「関連付けして開く」や「右クリメニューに入れ」るってのが判らない。
なので助言できない。
489:login:Penguin
09/12/13 22:58:13 X8Bwu1bm
>>484
Windowsの関連づけの感覚?
GNOMEであれば、プロパティから開くアプリ指定してるとかってことか?
試しにユーザーを新しいの作って再現するかどうか試してみたら?
もし再現できなければ ~/.gconf* ~/.gnome* とか退避して削除してログインしなおしてみるとか。
内容からして、くだ質のほうがアドバイスもらえると思うよ。
490:login:Penguin
09/12/13 23:54:09 3DX9cdGt
>>484
「xterm を起動できるかどうか」は
「xterm を実行する権限があるかどうか」で決まることだから、
「平文テキストを実行する権限」とは関係ない。
$ xterm /tmp/hoge.txt とかやると、
No absolute path found for shell: /tmp/hoge.txt
とかいったメッセージは出るけれど、xterm が起動する。
関連付け はよくわからないけれど、
テキストファイルをまとめて開こうとすれば、
ファイルの数と同じだけ xterm が一気に起動する ってことは想像できる。
CPUとか メモリ/swap とかが足りなければ、フリーズみたいな状況になるかもしれない。
491:login:Penguin
09/12/14 00:20:50 SmNokk3G
>>484
シェルスクリプトの話じゃないでしょう。
こっちで。
くだらねえ質問はここに書き込め! Part 179
スレリンク(linux板)
自分の環境もちゃんと書くこと。
URLリンク(www12.atwiki.jp)
492:login:Penguin
10/01/05 20:34:00 nuI9c99Q
bashで手軽にオブジェクト指向モドキする方法ってありませんか?
とりあえず試みたのですが、スッキリしません。
#!/bin/bash
gal(){
eval "$1"_name="$2"
eval "$1"_age="$3"
eval "$1"_sex="$4"
}
aisatsu(){
eval echo "私は\"\$"$1"_name"、\"\$"$1"_age"歳です。よろしく
ね。"
}
hanasu(){
eval echo "\"\$"$1"_name\"に何の用?"
}
gal "yuka" "由佳" "16" "女"
aisatsu "yuka"
hanasu "yuka"
493:login:Penguin
10/01/05 20:45:01 kbriKfoG
>>492
URLリンク(emasaka.blog65.fc2.com)
494:login:Penguin
10/01/05 20:48:20 nuI9c99Q
>>493
すごいものがあるんですね。
ありがとうございました。
495:login:Penguin
10/01/07 18:16:37 wAYEJTZp
テキストファイルで、指定した文字列を含む最初の行を開始位置とし、先とは別の
文字列を含む行が見つかるまでを削除するにはどうすれば良いでしょうか?
496:login:Penguin
10/01/07 18:20:32 D02SG01g
>>495
sed '/xxx/,/yyy/d'
497:login:Penguin
10/01/08 10:03:28 KgmcRvHm
>>495
ありがとうございます。
sedというのは強力なんですね。
498:login:Penguin
10/01/08 12:52:11 zGQxNXrb
>>497
これで「強力」ってどういう意味?
499:login:Penguin
10/01/08 16:04:10 /auv4CfE
>>498
文字/行削除程度しか知らない初心者にとっては、超強力。
500:497
10/01/08 23:16:45 KgmcRvHm
shの変数を>>496の/xxx/に使いたい場合についてお伺いします。
path=/aaa/bbb
sed "/$path/,/yyy/d"
の様にしても$pathが展開された時点で区切り文字がエスケープされておらず上手く
いきません。
前処理が必要なのか、それともスマートな方法が用意されているのでしょうか?
501:login:Penguin
10/01/08 23:33:25 awvr0YeL
ファイル名はNUL文字以外なら全て使えるんだよね。
ということは、前処理の段階で区切り文字をエスケープする必要があるのかな。
502:497
10/01/08 23:38:17 KgmcRvHm
やはり自前で前処理するわけですね。
sedで簡単に出来そうですね。
503:497
10/01/08 23:51:05 KgmcRvHm
下でできました。
#!/bin/sh -x
var=/aaa/bbb
esc=$(echo $var | sed -e 's/\//\\\//g')
$()の代わりに``を使うとパイプがあるせいか上手くいきませんでした。
実際はどうなのでしょう?
教えて頂けると嬉しいです。
504:login:Penguin
10/01/08 23:52:38 r+fu5lRJ
sed "/\\$path/,/yyy/d" はどうなの?
505:login:Penguin
10/01/08 23:53:13 aqeo86VH
区切り文字を変えるんだよ!
sed '\@foo@,\@bar@d'
506:497
10/01/09 00:07:36 WfSq+WCG
>>504
それだと$pathの先頭にのみ区切り文字がある場合にしか対応していないと思います。
>>505
そういうときに使うのですね。
なるほど。
ありがとうございました。
507:login:Penguin
10/01/10 12:29:36 jRBDc3XG
com1 | com2 | com3
の様なとき、どこかでエラーが起こった場合に、それを知ることはできないでしょうか?
bash3.0以降だと${PIPESTATUS[@]}で可能なようですがshでなんとかならないかと。
508:login:Penguin
10/01/10 12:37:23 E5a795Pl
subshellを使って、
(( com1 判定)| com2 判定 )| com3
みたいな事を見た憶えがするけど、定かでない。
509:初心者
10/01/13 23:30:52 9IUNZoL1
run.shファイルの中で、script_file.shをsourceした場合。
sourceされているscript_fileの中でscript_file自身の絶対パスを得る方法を調べています。
bashの場合はscript_fileの中で$BASH_SOURCEから得られるが、他のシェル(zsh/tcsh/ksh)でscript_file.shのパスを得られる方法を
教えていただけませんか?
>>>>>>>>>>>>>>>>>>>>>>
script_file.shファイルのある場所
/path/to/script_file.sh
>>>>>>>>>>>>>>>>>>>>>>
実行例:
%./run.sh
期待結果:
/path/to/
ファイル <run.sh>の中身
-------------
#!/bin/(sh/zsh/tcsh...)
source $path/script_file.sh
-------------
ファイル script_file:
-------------
script_file_path=`******`
echo $script_file_path;
-------------
510:login:Penguin
10/01/13 23:53:55 rEuhDc/f
>>509
機能知らない分際で答えるとさ
単純に呼ぶんだからさ
source "$path/script_file.sh" "$path/script_file.sh"
とか引数として渡してecho $1とかしても
できちゃったりはするね
511:login:Penguin
10/01/13 23:59:57 rEuhDc/f
期待結果は/path/to/だったかorz
ならsource "$path/script_file.sh" "$path"
でまぁできるといえばできてるけど
512:login:Penguin
10/01/14 00:01:40 4xSyV+UX
/が抜けてたねorz
513:login:Penguin
10/01/14 03:10:55 4xSyV+UX
>>507
気になったので書いてみた
>>508氏が言ってるようにもっと楽にできるんだろうけど
ちなみに頭悪いので間違ってる可能性ありと
使い物になってないと思うから 一応動いてるかも程度
514:login:Penguin
10/01/14 03:12:28 4xSyV+UX
function perror(){
stdout=`mktemp`;stdout2=`mktemp`
first=on
until test 1 -eq $# #引数一個の場合は何もしないので注意
do
if test $first = on
then
first=off
$1 1>$stdout 2>/dev/null
judge=$?
fi
if test $judge -eq 0
then
if ! test 2 -eq $#
then
$2<$stdout 1>$stdout2 2>/dev/null
judge=$?
shift
else #最後は標準出力へ
$2<$stdout #最後のcommandの失敗は判定してないので注意
shift
fi
else
echo "$1" error 1>&2
break
fi
stdout_hold=$stdout # 入れ替え
stdout=$stdout2
stdout2=$stdout_hold
done
rm $stdout $stdout2;unset stdout stdout2 stdout_hold first judge
}
515:login:Penguin
10/01/14 03:15:58 4xSyV+UX
perror 'ls /usr/bin' 'sed 's/^/test/g'' 'grep gcc' less
perror 'ls /usr/bin' 'sed 's/^/test/g'' 'tar xf' less
まぁ一応動いてるのかな!?
516:login:Penguin
10/01/14 17:27:09 FVM4x3d9
sed -e '$-3,$d' file
とすると
sed: -e expression #1, char 2: unknown command: `-'
というエラーがでます。
versionは4.1.5ですが上記の使い方間違ってますか?
517:login:Penguin
10/01/14 17:55:26 EAAIjJ3h
vi じゃないんだからそんな指定できないよ
518:login:Penguin
10/01/14 22:28:16 dyjWaACs
>>507
エラーが起こったかどうか *見えればいい* ってだけならこんなやりかたも。
(com1 ; echo $?>/tmp/test.log) | (com2 ; echo $?>>/tmp/test.log) | 略
(com1 ; xmessage com1:$?&) | (com2 ; xmessage com2:$?&) | 略
519:login:Penguin
10/01/15 09:27:35 vHlv+w15
>>516
つhead -n -4 file
520:login:Penguin
10/01/15 10:37:34 0e3bcUwp
>>519
-nの値に負の数を与えられるんですね。
521:login:Penguin
10/01/15 11:44:19 exz65txq
ダブルクォーテーションで囲まれた文字列を抜き出すってどうやればいいんだ?
cutでもexprでも俺には無理だった、絶対サクッとできるはずなのに悔しすぎる…
522:login:Penguin
10/01/15 12:29:58 n61dnfY7
grep -o '"[^"]*"'
523:login:Penguin
10/01/15 13:14:40 exz65txq
>>522
今日一日崇めさせてくれ
524:login:Penguin
10/01/15 20:34:53 cwTkNqT3
1日限定かい。
525:login:Penguin
10/02/07 15:35:53 lbKDrfi6
$ df -h /tmp
Filesystem Size Used Avail Use% マウント位置
tempfs 512M 89M 424M 18% /tmp
の%の前の数字(ここでは18)だけ取り出したいんだけど、どうすればよいですか?
526:login:Penguin
10/02/07 15:58:04 vkq5/P4Z
awk使う
527:login:Penguin
10/02/07 16:03:00 U7v7s3zM
とても安直な方法なので最適解には程遠いと思いますが
df -P /tmp | grep '/tmp$' | awk '{print $5;}' | sed 's/%$//'
528:login:Penguin
10/02/07 16:06:14 lbKDrfi6
>>526,527
ありがとう。
529:526
10/02/07 19:06:47 dchTEc3Z
>>527
おまwww
df -h /tmp | awk '/\/tmp/ { print gensub("%", "", "", $5) }'
530:login:Penguin
10/02/07 19:16:50 U7v7s3zM
いやそれくらい知ってる
531:login:Penguin
10/02/07 19:30:22 Fd1qGpin
複数行のキーワードをfgrepする手はないスか?
キーワードの行数は不定。以下例では仮に2行とします。
$ cat -n text
1 abcdefg*******
2 [hijklmn-z]
3 abcdefg*******
$ fgrep 'abcdefg*******なんとか[hijklmn-z]' text
text:1:abcdefg*******
text:2:[hijklmn-z]
1と2行目のペアはヒットするが、3行目がヒットしてはいけない。
532:531
10/02/07 19:32:00 Fd1qGpin
ああっと。
上の検索コマンドはgrepファミリーでなくても良いですが、perlは駄目です。
533:login:Penguin
10/02/07 19:58:16 KEZIcPfj
宿題は自分でやれよ
534:login:Penguin
10/02/07 21:03:26 U7v7s3zM
#!/bin/bash
AWKFILE="/tmp/$0.$$"
trap "rm -f ${AWKFILE}" 0
KV=0
echo "BEGIN{s=0;h=\"\"};" > "${AWKFILE}"
for keyword in $*; do
echo "/${keyword}/{if (s==${KV}){s=s+1;h=h NR \"\\t\" \$0 \"\\n\";} else {s=0;h=\"\"}};"
KV=`expr ${KV} + 1`
done >> "${AWKFILE}"
echo "{if (s==$#){print h;s=0;h=\"\";}};" >> "${AWKFILE}"
awk -f "${AWKFILE}"
535:login:Penguin
10/02/07 21:24:02 U7v7s3zM
いろいろ残念な部分があるけど、そこは使う人が直してね
536:login:Penguin
10/02/07 21:36:26 5ZhdKpPZ
>>534
んー。やっぱりスクリプト生成みたいになりますか。
私以外の人が考えてもすっきり行かない事が解りました。ありがとうございます。
>>533
この手の宿題を出す学校はあまり無いんじゃないかな。
537:login:Penguin
10/02/07 21:41:15 U7v7s3zM
自分でできない部分だけ聞きなよ
538:login:Penguin
10/02/07 21:51:00 UYJWIskO
>>536
質問に答えようとしてない奴の発言にはいちいち反応するな。
「教えてくれ」ってやつと「宿題は自分でやれ」ってやつは
「歩み寄る可能性がない」からスルーしたほうがいい。
専ブラ使える環境なら、NGワードに「宿題」って単語を入れておいたほうがいいよ。
539:login:Penguin
10/02/07 22:05:12 U7v7s3zM
>>531はいろいろ引っかかる部分があるから正直俺も最初は回答しようかどうか迷ったぞ
返事を聞いて>>538も出てああやっぱりかと思ったし...
と戯言はここまでにしとく
540:login:Penguin
10/02/07 22:36:33 5ZhdKpPZ
>>537
>自分でできない部分だけ聞きなよ
すっきりと実現できなかったので尋きました。というか、
往々にしてこの手のことを実現すると車輪の再発明になってしまってる事が多い。
なので、他の人も決定的な車輪を持ちあわせていないという情報はとても大切で、
有難く思っています。
541:login:Penguin
10/02/07 22:44:49 qrQKR8fu
典型的なゆとり脳というか
なんでこんな上から目線なんだろ
そういうのは自分で書いたの張ってから言えよ
542:login:Penguin
10/02/07 22:46:48 U7v7s3zM
>>540
実現できたなら実現方法そのものを聞く必要はない
実現方法を提示してより良くするにはどこを直せばいいか聞けばいい
他人のコストは格段に違うだろうし、回答も違ったものになる
というかお前>>526だろ?
543:526
10/02/07 23:05:32 sirvd3yi
こらこらw
静観してる俺まで巻き込むなよ
544:login:Penguin
10/02/07 23:09:51 fkJC7wtF
>>542
そうですね。その点は気をつけたいと思います。
>というかお前>>526だろ?
いや違う。
むしろ、>>529(526)にしろあなたにしろ"/tmp"をマッチさせている時点で、要求条件から逸脱していると思っている。
545:login:Penguin
10/02/07 23:30:09 U7v7s3zM
ID変えながら大変ですね。元に戻せないの?
546:login:Penguin
10/02/07 23:44:26 sirvd3yi
どうやって戻すんだよw
547:login:Penguin
10/02/07 23:49:53 qVmLGOqM
昼間寝ていたら正規表現使う夢を見た気がする、なぜだ
548:login:Penguin
10/02/07 23:56:03 U7v7s3zM
同じIPが取れるまでトライ!(やったことないので同じになるのか知らん)
549:login:Penguin
10/02/08 06:35:08 wgsJNc2d
>>548
お前ちょっと黙れ。
550:login:Penguin
10/02/08 08:30:32 shLyrCGR
U7v7s3zMが取れるまでトライし続けてるのかなw
551:login:Penguin
10/02/08 12:19:18 2AE05UQA
答えてもらっておいて「まあそんなもんだよね」
これはひどい
552:login:Penguin
10/02/08 17:02:25 h/fx9poh
複数の数字に,同じ四則演算(+,−,*,/)を繰り返した計算結果を表示するシェルスクリプトを,cshシェルスクリプトで書け。
(基本仕様)
@ コマンドとして実行できる.(シェルコマンドである.)
A 入力した数字を計算できる.
B 入力できる数字の個数は2以上とする.
C 四則演算子(+,−,*,/)を選択,または直接入力して
数字1□数字2□・・・□数字N (□=+ or − or * or /,N≧2)
の計算結果を出力する.
D 四則演算子以外の記号が入力された場合,エラーメッセージを出力する.
(ポイント)
? シェルコマンドにするには,スクリプトの最初に(#!で始まる)おまじないを書く.
? 標準入力から文字列を入力するには $< を用いる.
? コマンドラインに引数を指定した場合は,その引数は変数$argvに格納されている.その各要素を参照するには,$argv[1],$argv[2](または$1,$2)などとする.
? 四則演算には @ コマンドが使用できる.(ただし,整数しか扱えない.)
誰かわかるひとおねがいします(今週中にお願いします!)
553:login:Penguin
10/02/08 17:05:28 llGt0cFK
何箇所でマルチしてんだよwww
554:sage
10/02/08 17:06:29 kDoV0MXx
宿題は自分でやろうね。
555:login:Penguin
10/02/08 20:38:54 Wyshj96C
後から読んで526にワロタ
カワイソスw
556:login:Penguin
10/02/19 00:14:13 c2ocdmWw
df -h /tmp | sed 's/.*\([0-9][0-9]*\)%.*/\1/'
557:login:Penguin
10/02/20 23:34:54 vDEbYPUT
以下の結果を出力するシェルを,bashスクリプトで書け.
(基本仕様)
・コマンドとして実行できる.(シェルコマンドである.)
・ユーザーが10000以上99999以下の5桁の数字を入力する.
・その数字を7で割って1余り,かつ13で割って2余った場合は Daikichiと表示する.
・それ以外で,13で割って2余った場合は Chuukichiと表示する.
・それ以外で,7で割って1余った場合は Shoukichiと表示する.
・それ以外の場合は Hazureと表示する.
・入力した文字が10000以上99999以下の数字以外の場合はエラーメッセージを表示する.
・できる人は,コマンドライン引数でDaikichiなどの文字を変更できるようにする.
(ポイント)
☆シェルコマンドにするには,スクリプトの最初に(#!で始まる)おまじないを書く.
☆標準入力から文字列を入力するには read を用いる.
☆コマンドラインの引数は,$@に格納されている.(その要素は $1 $2 ...)
☆四則演算には $(( )) コマンドが使用できる.(ただし,整数しか扱えない.)
誰かわかるひとお願いします
558:login:Penguin
10/02/20 23:37:36 8qh4FPc7
>>557
> 誰かわかるひとお願いします
まぁ、Linux使える人ならば、誰でも分かる
"学校" の課題ですわな(w
# "学校" は 大学 でない。
559:login:Penguin
10/02/20 23:46:16 WE3Utbg7
シェルスクリプトの課題を出す学校ってあるんだね。
ふつーは、CとかJavaを中心にやるものだと思ってた。
560:login:Penguin
10/02/21 00:00:05 WDiWxw8N
#!/bin/bash
read read
echo $((read%3))`echo 5p$(echo e$(echo l5b$(echo 6M5)q2)744$(echo GsCg$(echo =$(echo =))))|base64 -d`
561:login:Penguin
10/02/21 00:16:12 FUNRtF1w
死ねばいいのに
562:login:Penguin
10/02/21 00:27:29 R8eJDQx8
何をお願いされているのだろう。アンケートかな?
回答「わかります」
上から2桁目で四捨五入したい(例: 15 -> 20, 312 -> 300, 9432 -> 9000)
どうやるのが一番簡単かな?
563:login:Penguin
10/02/21 00:39:34 y6fTjKHz
10を底とした対数とって
1.5*10^1
3.12*10^2
9.432*10^3
仮数部を小数点以下で四捨五入する
564:login:Penguin
10/02/21 01:05:26 y6fTjKHz
全然対数じゃないや
565:login:Penguin
10/02/21 01:20:23 mOFZBUIZ
>>557
お前UNIX板のシェルスクリプトスレでも宿題は自分でやれって言われてただろ
マジで死ね
566:login:Penguin
10/02/21 02:00:25 y6fTjKHz
$ echo 'x=9432; beki=l(x)/l(10.0); scale=0; beki/=1; scale=10; y=x/(10^beki); y+=0.5; scale=0; y/=1; y*=(10^beki); scale=0; y/=1; y;' | bc -l
9000
一応、15, 312, 9432 については期待の値になった。
567:login:Penguin
10/02/21 02:38:10 ymcnTK5S
>>566
しかし4432613で矛盾が出た。
568:login:Penguin
10/02/21 08:29:04 y6fTjKHz
違うかね?
4432613 = 4.432613 * 10^6
→ 4.4*10^6 → 4.0*10^6 = 4000000
>>562 さんに聞いてみようか。
入力4432613での期待値は、
上から2桁目の"4"で四捨五入して、4000000 でよろし?
3桁目の"3"でして、4400000 ではなくて。
569:login:Penguin
10/02/21 09:26:12 y6fTjKHz
少しコメント入れました。ダメな場所はどなたか直してください。
echo 'x=4432613;
# x=y * 10^d 表現にする
d=l(x)/l(10);
scale=0; d/=1;
scale=1; y=x/(10^d);
# yの小数点第一位を四捨五入して整数に。
y+=0.5; scale=0; y/=1;
# 元の桁数に戻す。
z=y*(10^d);
z;
' | bc -l
570:login:Penguin
10/02/21 11:49:45 y6fTjKHz
アプローチを変えて文字列処理にしてみた
$ echo 4432613 | perl -npe 's/^(\d)(\d)(\d+)/$1+($2>4) . 0 . 0 x length($3)/e;'
571:login:Penguin
10/02/21 12:23:46 y6fTjKHz
$ echo 15 | perl -npe 's/^(\d)(\d)(\d*)/$1+($2>4) . 0 . 0 x length($3)/e;'
572:login:Penguin
10/02/21 13:04:19 y6fTjKHz
#!/bin/ksh
v="$1"
a=${v:0:1}
b=${v:1:1}
c=${v:2}
[ $b -gt 4 ] && a=$((a+1))
b=0
c=$(echo $c | tr 0-9 0)
echo "$a$b$c"
573:login:Penguin
10/02/21 13:09:12 7QPAwQGI
ん、よくわからんけど……
乙 w
574:562
10/02/21 19:12:39 R8eJDQx8
なんかすごいものがw
>>568
>入力4432613での期待値は、
>上から2桁目の"4"で四捨五入して、4000000 でよろし?
よろしです。
パッと見で>>571がスマートですね
シェルからこいつを呼ばせて貰おうと思います
ありがとうございましたm(_ _)m
575:login:Penguin
10/02/21 20:33:49 y6fTjKHz
>>507
URLリンク(sourceforge.jp)
ど根性に脱帽
576:login:Penguin
10/02/26 00:26:14 DYTaEvQS
自分自身(ファイル)をサーバにuploadするシェルスクリプトって可能ですか?
具体的には、ちょこちょこ定期的にレンタルサーバにuploadしたいファイル群があるのでシェルスクリプトを書きたいのですが、
そのシェルスクリプトファイル自身もuploadしたいのです。
577:login:Penguin
10/02/26 00:29:09 C/OfvsKM
まず、なぜ不可能だと考えたのか、そこから聞こうか。
578:login:Penguin
10/02/26 00:37:26 DYTaEvQS
今実行中のファイルを操作するってのがいけないことなのかなぁと…
579:login:Penguin
10/02/26 00:39:36 dGd2Emr5
自身のunlinkすら可能だというに
580:login:Penguin
10/02/26 00:56:31 7suOgZ+f
アップロードどころか実行中のスクリプトを編集することもできるよー
581:login:Penguin
10/02/26 21:44:10 ZUmR/bTp
以下の結果を出力するスクリプトを,UNIXシェルで書け.
(基本仕様)
・コマンドとして実行できる.(UNIXシェルである.)
・主人公、妹1名、両親、自分の友人数名(うち最低1名は女性、半数以上は男性とする)、妹の友人(女性)数名が登場する.
・主人公、妹、自分の友人、妹の友人はいずれも生徒もしくは学生とする.
・両親のうち、父は総合商社勤務のサラリーマン、母は専業主婦とする.
・主人公の言動やイベントの発生にともない、各キャラのパラメータを変化させる.
・病弱な妹を思いやる兄と妹の交流を中心に、他の登場人物との友情や恋愛を描写する.
・エンディングは妹、もしくは妹の友人のいずれかと深い恋愛関係になるか、誰とも親密に慣れないバッドエンディングになるようにする.
・妹と恋愛関係が深まる場合、病弱な妹への思いやりが徐々に、自然に恋愛感情へ変化するように描写する.
・ゲームの操作方法はコマンド選択式またはコマンド入力式とする.
・すべてUNIXシェル内部で処理し,外部コマンドは呼び出さないこと.
(ポイント)
☆UNIXシェルにするには,ファイルの最初に #!/bin/bashというおまじないを書く.
☆コマンド選択方式のゲームにする場合、select文を使用できる。
☆四則演算には $(( )) コマンドが使用できる.(ただし,整数しか扱えない.)
誰かわかるひとお願いします
582:login:Penguin
10/02/26 21:49:36 ueeczQLj
さようなら
583:login:Penguin
10/02/26 22:36:07 PyskErwP
>>581
UNIXシェルってなんだ?
584:login:Penguin
10/02/26 22:53:51 nq/ujwuR
>>581
いろいろ拡張されてきたなw
585:login:Penguin
10/02/26 23:01:55 UQaFhRqQ
自演ウザス
586:login:Penguin
10/02/27 08:37:06 dxtkbNS9
素直にワラタ
587:login:Penguin
10/02/28 01:11:29 oz3AO1O4
シェルスクリプトとVBA、どちらが簡単ですか?
588:login:Penguin
10/02/28 01:13:35 XA1Dii88
シェルスクリプト
589:login:Penguin
10/02/28 01:20:34 oz3AO1O4
>>588
シェルスクリプトと比較して、VBAはどこがどんな風に難しいのでしょうか?
590:login:Penguin
10/02/28 01:37:41 XA1Dii88
用途が全然違う
VBA=MS製品の補助、高度なことやろうと思ったらVBの型とか定数とかメソッドとかプログラミング言語として覚えないといけない
シェルスクリプト=普段から使っているコマンド郡の応用、データの流れとアルゴリズムさえ判れば外部プログラム呼び出して何でも出来る
591:login:Penguin
10/02/28 01:52:34 oz3AO1O4
>>590
疑問なのは、なぜアプリケーションの補助がそんなに難しいのか、
もっと簡単にできなかったのか、それでは普通の人に使えないのではないか、
という点です。
Linuxで表計算っぽいことができる言語というとawkがありますけど、
あれくらい簡単だったら誰でも使えると思うのですが。
マクロ言語がエンドユーザ言語として使われるためには簡単でなければならないはず。
それなのにシェルスクリプトより難しいというのは、その目的にそぐわないような気がするのですが。
592:login:Penguin
10/02/28 01:55:02 C3UADE41
VBAの質問ならよその板でやっとくれ。
593:login:Penguin
10/02/28 01:56:36 oz3AO1O4
>>592
VBAについて知りたいというよりも、
シェルスクリプトとVBAの違いというか、
際立った特徴のようなものがあれば、それを知りたいんです。
594:login:Penguin
10/02/28 02:06:41 B/kw3N2G
>>593
そもそも活用シーンが全然違うのに比較してどうする。根本が間違っている。
比較するならWSHとだろう。
595:login:Penguin
10/02/28 02:12:43 oz3AO1O4
>>594
WSHもWindows PowerShellも
エンドユーザにはあまり受け容れられていないように見受けられます。
Linux/UNIX/MacOSXのエンドユーザでもスクリプトを全く書かない人はいますが、
Windowsよりはそういう人が少ないと思います。
単純にWindowsのほうがヘビーユーザ率が低いというもあるでしょうが、
それだけでなく、Windowsで使われるそれらの言語が
そもそもエンドユーザに適さない欠点を有しているからではないのでしょうか?
とすると、逆にシェルスクリプトはどういう点でそれらより優れているのでしょうか?
596:login:Penguin
10/02/28 02:20:34 B/kw3N2G
>>595
だからさー比較する前提条件が間違っている。
597:login:Penguin
10/02/28 02:24:04 oz3AO1O4
>>596
WSHと比較するようにアドバイスされたので、そうしたのですが。
598:login:Penguin
10/02/28 02:31:01 v9A/VFIk
シェルスクリプトと比較するべきはバッチファイル。
君の質問は「バッチファイルとVBA、どちらが簡単ですか?」という事になるから
この板で聞く事じゃない。
599:login:Penguin
10/02/28 02:33:03 oz3AO1O4
>>598
バッチファイルなんて論外でしょう。
あれとシェルスクリプトを一緒にするのはやめましょう。
600:login:Penguin
10/02/28 02:43:10 v9A/VFIk
VBAと一口に言ってもWord、Excel、Access、Outlook…全然違うぞ?
601:login:Penguin
10/02/28 02:44:34 B/kw3N2G
っていうかスレチ。
いちいちageているし、これ以上続けるならレス乞食とみなしてあぼーんする。
くだ質いけ。
602:login:Penguin
10/02/28 02:47:24 C3UADE41
くだ質に来られても困るな。
ム板にでも行ってくれ。
603:login:Penguin
10/02/28 02:52:42 oz3AO1O4
WSH(VBScript)で「C:\TechEzo\Round23.txt」内の「ようこそ」を含む行を表示する
Set fso = CreateObject("Scripting.FileSystemObject")
Set regEx = New RegExp
Set tempFile = fso.OpenTextFile("C:\TechEzo\Round23.txt")
regEx.Pattern = "ようこそ"
Do Until tempFile.AtEndOfStream
tempLine = tempFile.ReadLine
If regEx.Test(tempLine) Then
WScript.Echo tempLine
End If
Loop
これを見て「オブジェクト指向だから素晴らしい」とか
「シェルスクリプトに比べて簡単」とか思う人はいないでしょう。
管理者や一般のエンドユーザなど、ノンプログラマも使う言語を
こんなふうに設計したMSは頭が悪いとしか思えないです。
604:login:Penguin
10/02/28 03:01:02 SsRM0ruv
マルチ相手によーやるな
605:login:Penguin
10/02/28 09:04:34 JCw0fVKj
>>603
Window Power Shellもしかり。ちょい使いするには厳格すぎる。
あまりハードルを下げるとMS専門鯖管にスキルが付いてLinuxに行っちゃうからじゃね?
606:login:Penguin
10/02/28 11:13:46 ZpjvZrys
指定したディレクトリ以下を再帰的に検索して
同じディレクトリに大文字小文字違いでファイル名が重複して存在してた場合
例)
ABC.txt
abc.txt
abc.TXT
どれか一つ(どれでもいい)を残してあと消去するってのをやりたいけどどうやんの
607:login:Penguin
10/02/28 11:15:22 wBfYi/JJ
>>603 見たら、ハードル高くしたらむしろ出来る奴こそLinuxに行ってしまいそうにオモタ
608:login:Penguin
10/02/28 11:57:18 C3UADE41
>>606
perl か何かで書いた方が楽じゃないかな。
609:login:Penguin
10/02/28 11:58:42 qTqfFliX
>>606
$ find /tmp/hoge* -type f
/tmp/hoge1/ABC.txt
/tmp/hoge1/abc.TXT
/tmp/hoge1/abc.txt
/tmp/hoge1/a b c.txT
/tmp/hoge1/a b c.txt
/tmp/hoge2/ABC.TXT
/tmp/hoge2/ABC.txt
/tmp/hoge2/DEF.txt
$ find /tmp -type f | uniq -i -d -D --all-repeated=prepend | perl -00 -a -F'\n' -ne '{foreach $i (1..$#F){print "$F[$i]\n";}}'
/tmp/hoge1/abc.TXT
/tmp/hoge1/abc.txt
/tmp/hoge1/a b c.txt
/tmp/hoge2/ABC.txt
ディレクトリの大文字小文字違いは考えてない。
610:login:Penguin
10/02/28 14:28:15 oz3AO1O4
>>609
それって答になってるの?
ただ表示させてるだけじゃん。
表示させるだけならもっと楽な方法あるし。
$ ls -R
.:
ABC.txt Aca.TXT abc.Txt sample.sh test2
./test2:
ABC.txt Aca.TXT abc.Txt test3
./test2/test3:
DDD.TXT aBc.tXt
$ find ./* -type f | grep -i 'abc.txt'
./ABC.txt
./abc.Txt
./test2/abc.Txt
./test2/ABC.txt
./test2/test3/aBc.tXt
$ find ./* -type f | grep -i 'abc.txt' | uniq -i
./ABC.txt
./test2/abc.Txt
./test2/test3/aBc.tXt
611:login:Penguin
10/02/28 14:46:18 qTqfFliX
>>609 では、重複を探して、最初のを除いて、2つめ以降を出力してる。
この出方を>>606の評価基準で見てもらい、不満なければ、
あと xargs rm につなぐ程度で済むべ。
>>610 の例だと、それは全部消していいものなの?
612:login:Penguin
10/02/28 14:52:31 qTqfFliX
もちろん>>609が最適解だなんて思ってないんだけど、
>>610 のやり方だと、abc.txt って人が与えてるよね。何百個かある時はどうするの?
613:login:Penguin
10/02/28 15:10:05 qTqfFliX
ちょっと修正する。
$ find /tmp -type f | sort -f | uniq -i -d --all-repeated=prepend | perl -00 -a -F'\n' -ne '{shift @F; print join("\0",(@F,""));}' | xargs -0 ls -l
大丈夫そうなら最後の ls -l を rm に変更で。
614:login:Penguin
10/02/28 15:41:09 oz3AO1O4
A=""
find . -type f | sort -f \
| while read F;
do
P=`echo "$F" | tr '[A-Z]' '[a-z]'`
Q=`echo "$A" | tr '[A-Z]' '[a-z]'`
if [ "$P" == "$Q" ]
then
echo "${F}を削除"
# eval rm "$F"
fi
A="$F"
done
615:login:Penguin
10/02/28 15:47:27 oz3AO1O4
すまん、evalはなくても動く。
616:login:Penguin
10/02/28 15:59:45 0w7cauqm
>>606 が良ければなんでもいいでしょうに
617:login:Penguin
10/02/28 16:00:23 diBS8T6m
>>614
いかにもシェルスクリプトらしい解決法だね
perl使うほうがメンドイ
618:login:Penguin
10/02/28 16:32:44 qTqfFliX
感心しました。なるほど、うまいですね。
僭越ながら少し手を入れてみました。(sh 対応、外部コマンド実行回数減らす)
#!/bin/sh
A=""
Q=""
find . -type f | sort -f \
| while read F; do
P=`echo "$F" | tr '[:upper:]' '[:lower:]'`
if [ "$P" = "$Q" ]; then
echo "${F}を削除"
# rm "$F"
fi
A="$F"
Q="$P"
done
619:login:Penguin
10/02/28 19:19:20 ZpjvZrys
勉強になります
620:login:Penguin
10/02/28 19:46:12 v9A/VFIk
別ディレクトリになった時 Q="" しなくていいの?
621:login:Penguin
10/02/28 20:01:15 qTqfFliX
>>620
>>609 で楽するためディレクトリの大文字小文字は考えないことにしたんだけど、
d/abc.txt と D/abc.txt を同一視しちゃってるので、本当ならダメ、なんでしょう。
find . -type d するループを外側につけるか、
ディレクトリ名見る if をつければ直せそう。改修頼みます >>620
622:login:Penguin
10/02/28 20:11:12 0w7cauqm
だからそういうのは>>606が決めることだって。勉強になります、じゃなかろうに
623:login:Penguin
10/02/28 20:50:11 v9A/VFIk
#!/bin/sh
A="."
find ./dir -type f | sort -f | \
while read F; do
P=`dirname $F`/`basename $F | tr '[A-Z]' '[a-z]'`
Q=`dirname $A`/`basename $A | tr '[A-Z]' '[a-z]'`
if [ $P = $Q ]; then
echo "rm $F"
fi
A=$F
done
624:login:Penguin
10/02/28 22:25:55 v9A/VFIk
書き直したので貼り直しますね。
#!/bin/sh
B="!"
find . -type f | sort -f | \
while read F; do
T="`dirname $F`/`basename $F | tr '[A-Z]' '[a-z]'`"
if [ $T = $B ]; then
echo "rm $F"
fi
B=$T
done
625:login:Penguin
10/02/28 22:43:51 oz3AO1O4
>>624
スペースを含むディレクトリ作って実行してみ。
626:login:Penguin
10/02/28 23:06:54 v9A/VFIk
Windowsじゃあるまいし。
627:login:Penguin
10/02/28 23:09:17 Z6hm/tn2
空白や日本語を許すかで世代間のギャップが存在するなw
628:login:Penguin
10/02/28 23:11:07 0w7cauqm
用件的にsamba絡みと予想してたけどね。知らんけど
629:login:Penguin
10/02/28 23:13:21 1hHY9Dv5
linuxでフォルダ名に空白入れることはないな、色々面倒だし
630:login:Penguin
10/02/28 23:15:53 oz3AO1O4
>>626
シェル変数参照の際、値に含まれるスペースや*などの
パス名展開の文字が解釈されてしまうのを防ぐため、
ダブルクオートで囲むのは常識。
Windowsじゃないとかいう問題ではなく、
シェルスクリプトを書く際の常識。
631:login:Penguin
10/02/28 23:50:39 fdN9Zkx+
カラだったときエラーになっちゃうしね
632:login:Penguin
10/02/28 23:53:35 v9A/VFIk
わかった。わかった。次回からそうするよ。
633:login:Penguin
10/03/01 00:59:23 IaBmVUuE
>>610
>ただ表示させてるだけじゃん。
findでヒットした結果には任意のコマンドを適用可能。
馬鹿か?
634:login:Penguin
10/03/01 01:09:07 6uFj7AQh
俺は>>628だからそもそもどうでもいいけど、それかなりどーでもいいぞ
635:login:Penguin
10/03/01 01:09:42 QTdHsVxq
>>606
ファイル名を全部小文字に変えて、重複してたら上書きされて結果的に一つ残る。
ってやり方でも出来ると思う。(効率は良くない)
こんなスクリプト書いて /home/hoge/script/RENAME_lower.sh とか名前付けて chmod +x しておく。
#!/bin/bash
START_DIR="`pwd`"
while (test -n "${1}") ; do
if [ -d "${1}" ] ; then
cd "${1}" &&
(
pwd ; ls
for i in *\.[Tt][Xx][Tt] ;
do
if [ -f "${i}" ] ; then
mv "${i}" "`echo ${i} | sed y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/`"
fi
done
)
fi
shift
cd "${START_DIR}"
done
ディレクトリを find とかで検索して RENAME_lower.sh で処理。
$ find . -type d -exec /home/hoge/script/RENAME_lower.sh {} \+
636:login:Penguin
10/03/04 23:43:06 oO8XEq75
#!/bin/shと#!/bin/bashはどちらがおすすめなの?
637:login:Penguin
10/03/05 00:16:06 IlIr0pSM
#!/bin/bash
638:login:Penguin
10/03/05 00:19:11 FZm9BOvl
#!/bin/bashだろjk
639:login:Penguin
10/03/05 00:56:20 GiIL1sMg
用途次第。以下はsh
・shで書いても機能・速度が許容範囲で簡単に書ける場合
・shでないといけない場合(busyboxとか)
640:login:Penguin
10/03/05 08:08:46 CTq7Tclv
>>5
641:login:Penguin
10/03/05 08:37:14 GiIL1sMg
そいつはこのスレのお約束+α。YOUのオススメを書きなよ
642:login:Penguin
10/03/05 09:01:18 lZJ9zNnO
今どきのディストリなら sh -> bash が当たり前だろ
643:login:Penguin
10/03/05 09:56:40 y7mY4KkL
使い捨てなら深く考えずどっちでも OK。
別のマシンでも使うならよく考える。
644:login:Penguin
10/03/05 10:20:23 8QC8E4i2
>>642
Debian、Ubuntuはdash
645:login:Penguin
10/03/05 12:02:50 kHG21Qzt
ださw
646:login:Penguin
10/03/05 14:24:04 ixxT+8DA
>>641
それはUNIX板のシェルスクリプトスレと勘違いして貼られたもん
このスレのテンプレじゃあない
>>5-10を見ろ
647:login:Penguin
10/03/05 15:49:37 D7CZBw7a
bashの構文を使ってれば#!/bin/bash、使ってなくても#!/bin/bash
648:login:Penguin
10/03/05 22:06:54 1xo9OzwV
おとなもこどもも、おねーさんも#!/bin/bash
649:login:Penguin
10/03/05 22:38:25 t7X9IkaB
BSD系の人たちはどうすれば?
650:login:Penguin
10/03/05 22:41:37 IlIr0pSM
板違いです
651:login:Penguin
10/03/05 23:39:40 GiIL1sMg
$ sudo -i
# cd /bin;\rm -f sh;ln -s bash sh
652:login:Penguin
10/03/06 00:07:36 z+KgTZo4
>>651
sudo ln -fs bash /bin/sh
でいいんじゃね。
653:login:Penguin
10/03/06 00:53:02 zGIcPUED
コピペはできないようにしたかったから二行
ln -f は嫌い rm -f が好き
654:login:Penguin
10/03/06 11:13:20 8ckQdz96
・sh では、while中で代入した変数は、ループから抜けると使えなくなりますか?
・それがPOSIX仕様なら、一時ファイルを作る以外に、よい回避方法はありますか?
$ date | while read line; do last="$line"; done; echo "THE LAST: $last"
を Debian lenny の dash, bash, ksh で実行した場合、ksh 以外では値が残りません。
655:login:Penguin
10/03/06 12:21:04 zGIcPUED
POSIX仕様は知らない
シェル実装によって違いがあるけどパイプはサブシェルで実行される
$ date | (while read line; do last="$line"; done;echo "THE LAST: $last")
で回避になるならいいけど
$ date | while read line; do last="$line"; done
$ echo "THE LAST: $last"
ということをしてkshを正解としたいなら一時ファイルくらいしか思いつかない
656:login:Penguin
10/03/06 19:57:46 vEOUh0ms
dateをパイプでwhileに放り投げる目的は何?
657:login:Penguin
10/03/06 20:01:13 lSm8LSXx
ただの例題
658:login:Penguin
10/03/06 20:12:35 zGIcPUED
このスレで質問してるやつはほとんど約1名でただのキチガイだと思ってる
区別ができれば間違いなく回答しないんだけどねぇ
659:login:Penguin
10/03/06 21:29:26 U6pPRiRF
お前以外は全部俺の自作自演です
660:login:Penguin
10/03/06 21:38:12 zGIcPUED
質問者以外はどっちでもいいけど
661:654
10/03/06 22:34:04 8ckQdz96
>>655さん
> シェル実装によって違いがあるけどパイプはサブシェルで実行される
勉強になります。
[linux-users:96159] Re: [bash]whileループ内変数値の扱いについて教えてください。
URLリンク(search.luky.org)
のような、3以上のfdを使う方向でいこうと思います。
ありがとうございました。
662:login:Penguin
10/03/07 05:39:29 qUDKVagf
使っているbashの制約事項はどこに書いてある?
663:login:Penguin
10/03/07 15:21:22 kzHmHVjG
日本語でおk
664:login:Penguin
10/03/07 15:50:18 BVZuVuVb
>>662
/usr/share/doc/bash-doc-*/COMPAT
かな。
665:login:Penguin
10/03/07 15:58:04 CtU/xHgd
俺の認識不足なのかもしれんが
dateコマンドを単独で使っても、1行しか出力しなくね?
$ date
2010年 3月 7日 日曜日 15:50:25 JST
whileにパイプでつなぐ意味がわからん。
もしlsみたく複数行で出力するコマンド実行したならわからなくもないけど、
それなら無理にパイプでwhileにつなぐ必要ないし。
$ ls
sample.sh sample2.sh xyz.txt
$ for i in `ls`; do X="$i"; done; echo "$i"
xyz.txt
別の方法で簡単に解決できることをどうして難しくするのか意味不明。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5369日前に更新/221 KB
担当:undef