シェルスクリプト総合 ..
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
別の方法で簡単に解決できることをどうして難しくするのか意味不明。
666:login:Penguin
10/03/07 16:24:31 /xXz4ARQ
>>665
おまえは質問者の質問意図がわかってない
667:login:Penguin
10/03/07 16:27:22 CtU/xHgd
>>666
わかるわけない。
whileにパイプでつないでサブシェルになるからどうとか、
そういうので困ったことないから。
668:667
10/03/07 16:29:06 CtU/xHgd
っていうか、
実用上、それをどうしても使わないと書けないものなんてあるの?
例を示せるなら示してほしいもんだね。
669:login:Penguin
10/03/07 16:31:06 lFJTxoe3
おい、誰かこの馬鹿をつまみだせ
670:login:Penguin
10/03/07 16:33:48 CtU/xHgd
>>669
だから、実用上どういう意味があるのか教えてくれれば
言われなくても出ていくけど。
671:login:Penguin
10/03/07 16:42:38 lFJTxoe3
変数の扱い方が知りたかっただけろ。
例としてとりあえず適当に思いついたdateを使ったんだろう。
ただの一例なんだから実用上は別に意味ない。
672:667
10/03/07 16:47:13 CtU/xHgd
catコマンドを使ってファイルの中身を出力してパイプでwhileにつないだとか、
そういうのならわかるんだがな。
もっとも、その程度ならパイプ使わないで書けばいいだけだが。
だから、どんなことをキッカケにそんな質問が出てきたのかよくわからん。
まぁ、興味本位で意味のないことする人ってのもいるんだろうけどさ。
ガソリン車に灯油を入れてみるとか、
トラックでレールの上を走ってみるとか。
俺から見ると、そういう変人と同レベルの質問に見えるのさ。
673:login:Penguin
10/03/07 18:49:32 kzHmHVjG
(キリッ
674:login:Penguin
10/03/07 18:57:12 T97Hz24h
頭の中でdateを適当なものに置き換えればいいだけじゃん。
質問する上での便宜かもしれないってのに
いちいち突っ掛かってくるヤツってなんなの?
675:login:Penguin
10/03/07 19:44:39 CtU/xHgd
>>674
dateだからダメとかだけじゃなく、それ以前に変な質問だろ。
>>654の
>それがPOSIX仕様なら、一時ファイルを作る以外に、よい回避方法はありますか?
に対する答は「パイプを使うな」。
>>661の
>3以上のfdを使う方向でいこうと思います。
に対しては「他に手段がないならさておいて・・・正気か?」。
676:login:Penguin
10/03/07 22:20:17 EI1vZsn/
だから、お前はそもそもまともなスクリプトも書けないのに、容喙せんでいい。
677:login:Penguin
10/03/07 23:06:32 qcuqADXg
>>676
あれほどアホな質問しない程度には書けるが。
質問者が何をやろうとしてるか知らんが
意地でもパイプでwhileに投げて実現しようとしてんだろ?
まともな神経してたら別の方法でやるのにさ。
っていうか、質問者を擁護してる君も質問者みたいな書き方すんの?
合理性を考えたほうがいいよ。
678:login:Penguin
10/03/07 23:27:59 s4PVEnib
見ない間に核心つかれてるし
ここのキチガイはLIFEも低そうだし
なむなむ
679:login:Penguin
10/03/08 08:59:52 /FTwkaX/
mkfifoでnamed pipe作って使う手もあるな。
mkfifo fifo;
date > fifo&
while read line < fifo ; do last="$line"; done; echo "THE LAST: $last"
rm fifo
680:login:Penguin
10/03/09 20:30:43 o5fd938a
command 2>file.log
で標準エラー出力をファイルに書き出しているのですが、
エラーでない場合も0バイトのfile.logが生成されてしまいます。
エラーでない場合はfile.logは生成しない方法などあるのでしょうか?
681:login:Penguin
10/03/09 20:44:25 NDaUm8+N
>>680
終了ステータスでエラーかどうかわかるじゃん。
682:login:Penguin
10/03/09 20:47:03 LVMm3tsD
↑
ウォーニングは無視ですか?
683:login:Penguin
10/03/09 20:48:59 JIyb876K
0バイトなら削除したらええがな
684:login:Penguin
10/03/09 20:50:37 NDaUm8+N
条件後出しか…
685:login:Penguin
10/03/09 20:52:24 LVMm3tsD
条件を甘く見たお前さんが悪い。
686:login:Penguin
10/03/09 20:57:40 NDaUm8+N
居直られちゃったよ。
687:login:Penguin
10/03/09 21:03:59 o5fd938a
>>683
削除することにしました。
ファイル作らないで良い方法はないのかなー?
688:login:Penguin
10/03/09 22:45:08 wS8nnpNv
2>file.log でファイルが開かれるのは command が実行される前。
エラーがあったかどうか分かるのは、command の実行が完了した後。
file.log の中身が重要かどうかは、実行終了まで分からないのだから、
普通に考えて、後から削除するのが素直ですよね。
素直じゃない例。長くなっても大丈夫か分かりません。
#!/bin/sh
exec 3>&1
cmd='{ ./some.sh 2>&3 1>stdout.log 3>&- ; } 3>&1 | grep -v warning'
errout=`eval $cmd`
exec 3>&-
if [ -n "$errout" ]; then
echo "there were one or more error"
echo "$errout" >stderr.log
fi
689:login:Penguin
10/03/10 20:15:59 7RM74zt/
久しぶりにマニアックなコード見た。
690:login:Penguin
10/03/12 00:36:34 g58g7Khc
読み解けん;_;
691:login:Penguin
10/03/16 06:49:42 +KO51EwF
一回3に2の出力を出して、空ならthere were one or more errorを1に出力、空じゃなければstderr.logに出力
692:login:Penguin
10/03/16 08:33:07 L4OU7Nfk
>>688
だれか解説よろ
693:login:Penguin
10/03/16 17:36:29 7rwiLleU
グロブで /etc/pass* のリストを得たいのだが、
list=/etc/pass*
だと展開してくれない。
list=$(ls /etc/pass*) ならおkで、改行文字 '\n' 区切りのリストになる。
だが ls のために fork してしまうのが痛い。
どうにかならんのか。
お願いします m(_ _)m
694:login:Penguin
10/03/16 17:41:09 7rwiLleU
あっさり解決した。
printf "%s\n" /etc/pass*
これでいいのか。よくわからんが、printfは組み込みコマンドだったはず。。
695:login:Penguin
10/03/16 17:55:59 oDvWUAap
>>693
試したら展開できたけどな。
696:login:Penguin
10/03/16 17:59:59 jFL6NZ+y
昔はechoを使ったもんじゃ
697:login:Penguin
10/03/16 18:00:18 7rwiLleU
>>695
本当貝?bash?
$ list=/etc/pass*
$ echo "${list[@]}"
/etc/pass*
ダメなんだが。。これをパイプで他のコマンドに渡したいから、ギリギリで展開されても困る。
698:login:Penguin
10/03/16 18:01:26 oDvWUAap
>>697
echo $list で。
699:login:Penguin
10/03/16 18:01:54 7rwiLleU
>>696
echo だと改行文字 '\n' 区切りのリストにならない。
$ list=$(echo /etc/pass*)
$ echo "${list[@]}"
/etc/passwd /etc/passwd-
700:login:Penguin
10/03/16 18:03:33 oDvWUAap
>>699
そんな条件なかったじゃん。
701:login:Penguin
10/03/16 18:05:27 7rwiLleU
>>700
だからprintfを使うことにしたよ。
「一行ずつ」読むコマンドにパイプで渡さないといけないから。
702:login:Penguin
10/03/16 18:06:01 oDvWUAap
後出しで文句言われても……。
703:login:Penguin
10/03/16 18:07:08 7rwiLleU
>>702
いえ事故解決しました、と言った後であなたが展開できましたとおっしゃったので
私はレスをしただけです。
704:login:Penguin
10/03/16 18:08:01 7rwiLleU
あ、どうもありがとう(^^)
705:login:Penguin
10/03/16 18:15:41 m9fA5s2e
for i in /etc/pass*; do echo "$i"; done | command...
706:login:Penguin
10/03/16 18:17:49 7rwiLleU
>>705
すみません、また後出しですが、一応言っておきます。
わざわざ変数 list に格納しているのは、後で自分が参照するからです。
707:login:Penguin
10/03/16 22:36:09 vMRJlqrh
はいはい次どぞー
708:login:Penguin
10/03/16 22:41:29 7rwiLleU
え、いいんですか?次
709:login:Penguin
10/03/20 00:18:55 qKxWTBVf
ファイルから丸括弧(開く) "(" だけの行を読み込んだ際、
if [ \( "$LINE" = "$CHK1" -o "$LINE" = "$CHK2" \) -a \( "$A" = "$B" -o "$C" = "$D" \) ]; then
といったif文でエラーとなってしまいます。
何がまずいのでしょうか?
710:login:Penguin
10/03/20 07:41:24 SCWfCSZ4
>>709
if [ \( "x${LINE}x" = "x{$CHK1}x"
だと通りませんか。
711:login:Penguin
10/03/20 12:14:57 qKxWTBVf
>>710
早速の回答、ありがとうございます。
マシンが平日しか使えないので、火曜日に試してみます。
ところで、$LINE="("の場合だと、
if [ \( "$LINE" = "$CHK1" \) ]; then だとエラーとなりますが、
if [ "$LINE" = "$CHK1" ]; then だとエラーとなりませんでした。
何か書き方が間違えているのでしょうか?
712:login:Penguin
10/03/20 12:17:45 qKxWTBVf
連投すません。
どちらの書き方も、$LINE="(A"とかだとエラーとなりません。
"("の場合のみ、エラーとなります。
なんでだろ?
713:login:Penguin
10/03/20 22:21:20 7Z9+G9O/
例外処理ってどうすればいいだろうか。
for x in ...
do
処理A && \
処理B && \
処理C && \
continue
# エラー?
後片付け、そして次のアイテム
done
サブルーチン化するもの手だけど、それも大袈裟な場合ってどうやるのがスマートだろうか。
すべてを && を繋げる方法しか思いつかない。。
714:login:Penguin
10/03/20 22:33:44 SCWfCSZ4
>>713
URLリンク(www.unix.com)
に、
cleanup_script()
{
echo "Cleaning ..."
}
trap 'cleanup_script' ERR
set -e
ってコードがあったです。set -e が肝らしい。
715:login:Penguin
10/03/20 22:43:49 7Z9+G9O/
>>714
ありがとう。便利ですが、/bin/sh(DebianだとDASH)ではうまく動作しませんでした。
BASHなら問題ありません。
handler()
{
echo "Trap ERR!"
exit 1
}
set -e
trap ?handler? ERR
for x in $(seq 1 10)
do
echo $x
[ $x -eq 5 ] && false
done
実行結果:
1
2
3
4
5
Trap ERR!
716:login:Penguin
10/03/20 22:47:11 7Z9+G9O/
SIGUSR1 30,10,16 Term ユーザ定義シグナル 1
SIGUSR2 31,12,17 Term ユーザ定義シグナル 2
これを使うのもアリか...
717:login:Penguin
10/03/20 23:28:40 7Z9+G9O/
あともう一つ質問!
#!/bin/sh
echo $@
exit 0
というプログラムがあったとして(test.shとする)、
./test.sh 'hoge' 'fuga' > fileA
./test.sh > fileB 'hoge' 'fuga'
をすると、fileAとfileBの両方とも同じ結果になるんだけど、これはどう違うの?
718:login:Penguin
10/03/21 01:59:46 AC+zwoRf
シェルスクリプトで他のサーバにあるファイルを弄ることは可能ですか?
具体的には、
ローカルPC、サーバA、サーバBという3台のPCがありまして
サーバA上の特定のファイルを編集してサーバBにアップロードし、さらにAにある他のファイルをBにアップロードする
という処理をローカル上のシェルスクリプトで自動化したいのです。
しかしsshコマンドで他サーバに繋ごうとするとパスワードを聞かれる所で止まってしまいます。
719:login:Penguin
10/03/21 02:04:15 65tFCowN
つ公開鍵認証
720:login:Penguin
10/03/21 02:11:15 AC+zwoRf
なるほど…やはりそうなるのですね
公開鍵とやらを勉強することにします
mysql -u root -prootみたいに指定できればいいのになぁ
721:login:Penguin
10/03/21 02:16:36 AC+zwoRf
というか、仮にsshで繋げたとしても
実行環境が他サーバに移るわけじゃないし他サーバのファイルをいじるのは無理なのかな?
シェルスクリプトはcdコマンドの実行結果すら次の行に持ち込まないですよね
全ての実行行は独立したシェルで実行されるとか何とかで。
722:login:Penguin
10/03/21 02:36:57 65tFCowN
こんな感じで編集も転送もできる
ssh -i 秘密鍵A ユーザ名A@Aサーバ "任意のコマンド(編集ならsedとかawk)"
ssh -i 秘密鍵A ユーザ名A@Aサーバ "任意のコマンド(転送ならscp -i 秘密鍵B 編集したファイル ユーザ名B@Bサーバ:保存場所 )"
エラー処理とかちゃんとしたいならAサーバに編集、転送用のスクリプト置いてクライアントからは引数だけ渡せばいいし
723:login:Penguin
10/03/21 06:55:40 s8pDEsGz
>>721
expectは?
724:login:Penguin
10/03/21 09:41:21 oiz+h8tr
>>721
>シェルスクリプトはcdコマンドの実行結果すら次の行に持ち込まないですよね
#!/bin/sh
cd /tmp
./hoge.sh
上記は/tmpに移動して、/tmpにあるhoge.shを実行するけど?
725:login:Penguin
10/03/21 10:09:43 s8pDEsGz
ssh host cd /tmp
ssh host ./hoge.sh
こんなアホをやっていると予想。
シェルスクリプトを予めscpで送っておくとか、標準入力の内容をスクリプトとして実効できたり出来ないんかね。
726:login:Penguin
10/03/21 17:30:12 cuEg7ODK
echo "( cd /tmp ; ./hoge.sh )" | ssh host
でいいですよね。
727:login:Penguin
10/03/21 17:55:39 gIM4/doG
>>712
-x をつけて実行してみるとなんとなくわかるかも。
文字列の比較のときは710氏の方式で前後に固定文字を入れたほうが誤動作しにくい。
ただタイプミスだと思うけど、中括弧の位置が間違ってて
if [ \( "x${LINE}x" = "x${CHK1}x"
だけどね。
728:login:Penguin
10/03/21 20:47:12 NvA+aKwG
>>727
ありがとう。
固定文字列を入れて比較するのは、いいアイディアですね。
(なんで思いつかなかったんだろう…)
729:login:Penguin
10/03/24 01:16:09 fusHHN2e
お願いします。
・forの入れ子構造ってOKなんでしょうか?
#!/bin/bash
#nekoneko.sh
for var in aaa
do
for fstype in fs
do
hogehoge=neko
done
echo $var/$hogehoge
done
#sh nekoneko.sh
aaa/neko
期待結果は得られているのですが、勉強中なのであっているかどうかがわかりません。
・forでテキストファイルの読み込みってできないのでしょうか?
dosのバッチで言うところの for /f %%a in (nekoneko.txt) do 〜のような方法です。
よろしくお願いします。
730:login:Penguin
10/03/24 01:24:36 KIBvvI04
>・forの入れ子構造ってOKなんでしょうか?
OK
>・forでテキストファイルの読み込みってできないのでしょうか?
DOSのforはしらんが
for a in `cat nekoneko.txt`
でいいのか?
731:login:Penguin
10/03/24 10:02:51 qcQ/2FhI
>>729
インデントしようよ。
全角空白で書くけど、半角空白に変換してくれ。
#!/bin/bash
for var in aaa; do
for fstype in fs; do
hogehoge=neko
done
echo $var/$hogehoge
done
ファイル読んで回すのは while read とか使うんじゃね。
732:login:Penguin
10/03/24 12:47:43 D4crZAMy
>>731
全角空白のインデントはやめろ!
半角空白のほうがいい
お前の専ブラ変えろ馬鹿
733:login:Penguin
10/03/24 12:51:42 D4crZAMy
#!/bin/bash
for var in aaa; do
for fstype in fs; do
hogehoge=neko
done
echo $var/$hogehoge
done
734:login:Penguin
10/03/24 12:58:21 pFOtZDrD
恥ずかしいね。
735:login:Penguin
10/03/24 13:12:41 D4crZAMy
URLリンク(usamimi.info)
URLリンク(usamimi.info)
生ログにはタブと半角空白はきちんと記録されてるから。
素直に表示する専ブラで見れば奇麗にインデントされる。
736:login:Penguin
10/03/24 13:18:59 pFOtZDrD
おいおい、pre要素以外では連続する空白文字は一つにまとめられるのだが。
2ちゃんねるのデータ書式はウンコだけど、連続する空白文字をそのまま
表示する仕様なんてないぜ?
そういうブラウザを押しつけるのはどうなの、って思うけど。
737:login:Penguin
10/03/24 13:25:53 qcQ/2FhI
>>732
うちの環境では半角空白でも見えるけど
相手の環境で見えるとは限らないから。
738:login:Penguin
10/03/24 13:29:31 pFOtZDrD
これはブラウザ依存だと思うね。
空白文字をそのまま扱うものもあれば、HTMLの仕様に準じて無視するものもある。
を使う手もあるのだが、これを同処理するかもブラウザ依存。
まあ2ちゃんねるがクソなんだが。
739:login:Penguin
10/03/24 13:31:53 KIBvvI04
おまいらスクリプトについても語ってやれよ・・・
740:login:Penguin
10/03/24 13:37:19 D4crZAMy
>>737
アンタ良い人だね。
でもな、コード貼る事が多いスレを見てるんなら閲覧者のほうでインデントするブラウザにしたほうがお互いに楽だぜ。
貼るほうもコピーする側もそのまま使えるんだから。うっかり全角空白入れたまま使う事もない。
スクリプトスレなら困る事少いかもだが、全角空白の入ったパッチ貼られたりしたら目もあてらんねぇよ?
741:login:Penguin
10/03/24 13:39:50 qcQ/2FhI
>>740
だから「変換してくれ」って書いたじゃん。
閲覧者の環境まで責任持てん。
742:login:Penguin
10/03/24 13:40:45 qcQ/2FhI
良い人とかってよりも、portability を重視しただけだよ。
書く環境と読む環境が同じとは限らない。
こういう配慮はスクリプト書きもいっしょ。
743:login:Penguin
10/03/24 13:48:01 D4crZAMy
とりあえず「全角空白を推奨」するのだけは勘弁してくれ。
それが無きゃ俺も黙ってさ。
744:login:Penguin
10/03/24 13:53:55 qcQ/2FhI
推奨なんてしてないよ。
745:login:Penguin
10/03/24 14:04:24 D4crZAMy
>インデントしようよ。
>全角空白で書くけど、半角空白に変換してくれ。
インデントは推奨してるが、改めて見直すと全角空白推奨ではないと言われたら確かにそうだな。
いきなり俺の言い方がきつかったのは謝る。数日前にム板で同じような事があってココでもか!と思ったもんだからついな。
すまんかった >ID:qcQ/2FhI
746:login:Penguin
10/03/24 14:05:59 eh1BmETO
藻前ら、モティツケ
/\⌒ヽペタン
/ /⌒)ノ ペタン
∧_∧ \ (( ∧_∧
(; ´Д`))' ))(・∀・ ;)
/ ⌒ノ ( ⌒ヽ⊂⌒ヽ
.(O ノ ) ̄ ̄ ̄()__ )
)_)_) (;;;;;;;;;;;;;;;;;;;)(_(
747:login:Penguin
10/03/24 15:40:14 8MgVQE42
全角文字やTABなどを記号で表示するようにしておけば、
そうそう事故はないのでは?jaspace.elとか便利だよ。
748:login:Penguin
10/03/24 15:52:39 c/AsI/YT
学習用のネタとかならともかくパッチを 2ch に貼んのはやめたほうがいいんじゃね
書き込み確認のとこに
投稿者は権利の何もかもを管理者に無償譲渡することを承諾しますみたいなこと書いてあるぜ
749:login:Penguin
10/03/24 16:12:14 o3qxm3DD
どうしたんだ突然
750:login:Penguin
10/03/24 18:28:22 JGtYY8P/
find -exec command {} +
はもっと知れ渡るべき
日経Linux
751:login:Penguin
10/03/24 21:53:30 LVpGQGYh
xargsに慣れちゃって、手が勝手に打っちゃうんだよな
752:login:Penguin
10/03/25 00:42:02 AS83wWPj
>>730
hww
753:login:Penguin
10/03/25 05:46:35 bk8Jf0RP
ちゃんと理解しながら読んでいればインデントなんて枝葉末節。
自分のコードならばこだわるかも知れないけどね。
754:login:Penguin
10/03/25 07:38:08 woPIYugI
>>728
UNIX板で知った
URLリンク(www.opengroup.org)
の、APPLICATION USAGE から先が勉強になったです。
-a や -o より && や || でつなぐ方がよいとか。お題の部分についてはこれ。
test "$1" = "bat" -a "$2" = "ball"
syntax errors occur if $1 evaluates to '(' or '!'.
One of the following forms prevents this; the third is preferred:
test "X$1" = "Xbat" -a "X$2" = "Xball"
test "$1" = "bat" && test "$2" = "ball"
test "X$1" = "Xbat" && test "X$2" = "Xball"
755:login:Penguin
10/03/25 10:18:07 Bu4gYkWT
>>750
man find
したら、-exec command {} +の下に
-execdir command
とか
-execdir command {} +
とかを見つけた。勉強になった。
こういう事があると電子辞書より紙の辞書の方がいいかもと思う。
756:login:Penguin
10/03/25 23:03:23 AS83wWPj
>>753
とかほざく輩に限ってテストパターンは無限大な開放系のソースを書いちゃうの。
要はモデル化ができてないと。愚直というか馬鹿正直と言うか。
757:login:Penguin
10/03/25 23:09:11 P4/zjZQS
>>745
お前いいやつだなw
758:login:Penguin
10/03/26 03:02:23 y6rsP+OO
>>756 読解力ないんだな(プ
759:login:Penguin
10/03/26 07:00:58 joqM+Eq0
>>758
より多くの人に読解できることを目的にしていないロジックはオナニーだろう。
760:login:Penguin
10/03/26 07:13:10 jyaRuxPh
つまり日本語はオナニー
761:login:Penguin
10/03/26 07:49:22 WwpVuIlf
セックスよりも気持ちいい
762:login:Penguin
10/04/02 15:42:26 la5bZF10
bashなどで標準出力はデフォルトで画面となっていますが、具体的にはどのファイルになりますか?
debianですと/dev以下にあるのだと思いますが。
763:login:Penguin
10/04/02 16:00:38 FvuB/nMw
>>762
ls -l /proc/$$/fd/1
764:login:Penguin
10/04/05 20:18:53 HX4Ssz6U
フラシュメモリ をマウントするとき
# mount /dev/sdb1 /mnt/usb
こんな感じでやると思いますが、
もし、フラシュメモリが挿されていて、かつ、マウントされていない場合これを実行し
その他の場合、実行しないという、シェルスクリプトを教えてください
765:login:Penguin
10/04/05 20:31:37 hbFmdj3V
>>764
問題点は
・フラッシュメモリがささってないことをどうやって判定するか
・マウントされていないことをどうやって判定するか
でしょ。
それシェルスクリプトの話じゃないよ。
766:login:Penguin
10/04/05 21:02:20 HX4Ssz6U
>>765
やはり無理ですか、
・フラッシュメモリがささってないことをどうやって判定するか
・マウントされていないことをどうやって判定するか
ここは、Cか何かで実装し、結果によって、振る舞いを決めるしかなさそうですね
767:login:Penguin
10/04/05 21:12:06 8DwAi4Rq
/dev/disk/by-uuid/ 見てそのUSBメモリがささってるか判定して
マウントは /proc/mounts とか /etc/mtab 見ればわかる
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5367日前に更新/221 KB
担当:undef