[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/10 01:32 / Filesize : 243 KB / Number-of Response : 985
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

シェルスクリプト総合@LINUX Part4



1 名前:login:Penguin mailto:sage [2008/05/17(土) 13:44:57 ID:9hFWtCOD]
UNIX板のスレを見ている方も多数おられるかと思いますが、
まあそれはそれとして、BASHウゼーとか言われる心配なく
平和にLINUX的スクリプト談義しましょうよ。

初めての自作スクリプト、自信ないから見てください。な初心者から
トリッキーな技を駆使した作品を披露したい、蘊蓄を語りたい上級者まで
いろいろな人に参加して頂けると嬉しいです。

perlやらPythonやらの話が混ざっても良いんでない?

Part3 : pc11.2ch.net/test/read.cgi/linux/1184077033/
Part2 : pc11.2ch.net/test/read.cgi/linux/1154578200/
Part1 : pc8.2ch.net/test/read.cgi/linux/1121994321/

>>2-5あたりに色々と。

175 名前:login:Penguin mailto:sage [2008/06/16(月) 08:11:50 ID:JECOF4SI]
>>169に対する皮肉としか読めない。

176 名前:login:Penguin [2008/06/16(月) 11:27:24 ID:1Ms3xCVR]
#!/bin/csh -f

set s=$1
set t=$2
set f=$3

cat $f | tail +$s | head -$t

exit 0
echo ------------------

以上を改良しろ、と言われました。みなさんならどうしますか?どなたか教えて下さい。

177 名前:login:Penguin mailto:sage [2008/06/16(月) 11:28:31 ID:/AfhYEBu]
>>176
*csh を使うのをやめる。まずそれからだ。

178 名前:login:Penguin mailto:Sage [2008/06/16(月) 12:44:56 ID:qvjZYD3V]
>>176
速度面で改善ならアセンブリで書き直してやれ

179 名前:login:Penguin mailto:sage [2008/06/16(月) 13:59:17 ID:6AAfiJB4]
>>176
とりあえずマルチをやめること

180 名前:login:Penguin mailto:sage [2008/06/16(月) 23:26:05 ID:gSPrzSdg]
>>176
次に日本語を勉強すること

181 名前:login:Penguin [2008/06/17(火) 07:40:56 ID:AmqP2Db0]
abc
bcd
cde
<abc> hoge hoge
(スペースはタブです)
となっている場合、<abc>の列を削除したい場合
sed 's/\t//g' | sed "s/<abc>*//g" > hoge
だとうまくいかないんですけどどこかおかしいんでしょうか。
ご指摘お願いします。

182 名前:login:Penguin mailto:sage [2008/06/17(火) 08:11:56 ID:+a7Qx5aV]
>>181
sed 's/^<abc>.*//'

* は「前のものの0回以上の繰り返し」。
シェルの glob と違って「任意の文字列」ではない。

183 名前:login:Penguin [2008/06/17(火) 08:57:44 ID:AmqP2Db0]
>>182
ありがとうございます。試してみます。



184 名前:login:Penguin [2008/06/17(火) 10:01:29 ID:AmqP2Db0]
先程はありがとうございました。今度はまた問題が出ました。
aaa
bbb
ccc
ddd
eee
となっているファイルに例えばcccの行にだけ行頭にタブを二ついれたいんですけど
どうすればいいでしょうか。検索してみたんですけどそんなことをする例がないので
わからないです。お願いします。

185 名前:login:Penguin mailto:sage [2008/06/17(火) 10:12:39 ID:+a7Qx5aV]
>>184
sed 's/^ccc$/\t\tccc/'

186 名前:login:Penguin [2008/06/17(火) 11:07:44 ID:AmqP2Db0]
>>185
ありがとうございます。
でも僕の例の出しかたが悪かったです。正確には英語じゃなくて日本語なんです。
あああ
いいい
ううう
えええ
おおお
となってて「ううう」の先頭行に処理をしたいんです。
本当にすみません。

187 名前:login:Penguin mailto:sage [2008/06/17(火) 20:22:32 ID:RyDH/vmA]
同じ人が、ここ10日ぐらい似たような質問を繰り返しているような気がしてならない。

188 名前:login:Penguin mailto:sage [2008/06/17(火) 21:23:10 ID:yjVz7+7h]
>>187
わわわ
たたた
ししし
ももも
そそそ
ううう
おおお
ももも
いいい
ままま
すすす

189 名前:login:Penguin mailto:sage [2008/06/18(水) 07:36:46 ID:U0oDy3CU]
>>186

$ cat aiueo.txt
あああ
いいい
ううう
えええ
おおお

$ sed 's/^ううう/\t\tううう/' aiueo
あああ
いいい
ううう
えええ
おおお

>>185の例と全く同じにできるんだが、お前は試しもせずに文句ばっかりたれとんのか。
いい加減にしろデコスケ!

190 名前:login:Penguin mailto:sage [2008/06/18(水) 21:41:14 ID:wntHkGxD]
>>189
うっせえよ秋葉原殺傷事件予備軍。

191 名前:login:Penguin mailto:sage [2008/06/18(水) 22:06:13 ID:POz9Y1nl]
Debian etch使ってるんだが初期設定のスクリプトって作れたりする?

例えば・・
/etc/apt/sources.list
OS全体のフォント設定
必要なツールなどインスコ

などなど・・

複数台にインスコするのはいいけど初期設定がマンドイ・・


192 名前:login:Penguin mailto:sage [2008/06/19(木) 00:14:33 ID:syeq8gZ9]
>>191
やれば作れるんじゃね?
がんばれ。

193 名前:login:Penguin mailto:sage [2008/06/19(木) 01:01:28 ID:x+K2/T6V]
>>191
一番簡単なのはapache走っているサーバーにディレクトリ作り、そこの設定ファイルのテンプレとかを
置いておく。 そして新しいシステムの基本インスコをしてネットに繋がったら:

wget hoge/~me/install-etch
./install-etch

で、そのスクリプトの中でapt-getしたり設定ファイルを書き換えたり、必要なファイルをwgetで持って来て
置き直したりとかごちゃごちゃ書いておく。

RH系だったらkickstartがお薦め。 sargeでdebianのカスタムインストーラー作りも一時したけど
えらくめんどくさかった。 最近はもっと優しくなったのかな?




194 名前:login:Penguin mailto:sage [2008/06/19(木) 01:15:35 ID:ETqS5qxr]
>>192
おう

>>193
ようはコマンドラインを書けばいいわけだよね。とりあえずこれやってみる。
Kickstartをググってみたら簡単そうだけどローカル鯖必要そうだね。

どうもでした。

195 名前:login:Penguin mailto:sage [2008/06/19(木) 01:32:21 ID:JFsnEc1J]
すいません エスケープの使い方で質問させて下さい。
下みたいなスクリプトで

#!/bin/sh
A=tama
B=mike
for i in $A $B
do
tmp=`eval perl -e \'\$\a \= \"$i\"\; if \( \$\a \=\~ \/\^\\\S\+\(\\\S\{1\}\)\$\/ \) \{ print \"s\$\{ 1 \}x_player\" \}\'`
echo "$tmp"
done
exit 0

一応こうすれば動くのですが、
perlの行のところにあるエスケープを減らしてすっきりさせたいのです。
良い方法を教えて下さい。

196 名前:login:Penguin [2008/06/19(木) 01:45:49 ID:syeq8gZ9]
>>195
perl スクリプトを別ファイルに追い出す。

197 名前:login:Penguin mailto:sage [2008/06/19(木) 08:19:04 ID:k7GKeo3u]
シェルに評価されてはいけない部分をシングルクォートする。
i=tama
perl -e 'printf( "%s: nya-\n", '"$i"' )'

198 名前:login:Penguin mailto:sage [2008/06/19(木) 17:34:35 ID:qZMvy29K]
shの質問です
スクリプトがCtrl+Cなどで終了させられた時に特定の動作を持たせたいのですが
どのようにすれば実装できるでしょうか?

199 名前:login:Penguin mailto:sage [2008/06/19(木) 17:37:01 ID:syeq8gZ9]
>>198
trap

200 名前:login:Penguin mailto:sage [2008/06/19(木) 18:08:53 ID:qZMvy29K]
>>199
ありがとうございますm(_ _)m

201 名前:login:Penguin mailto:sage [2008/06/19(木) 23:30:35 ID:JFsnEc1J]
>>196
 なるべく一つのファイルにまとめたいんで。。。アドバイスありがとうございます。
>>197
197さんのアドバイスを参考にして、perlの行を下のように書くと動きました。
tmp=`perl -e '$a = "'"$i"'"; if ( $a=~ /^\S+(\S{1})$/ ) { print "s${ 1 }x_player" }'`

 しかし、こう書くと$aの前のシングルクォーテーションがバッククォーテーションで
perlを実行した時に消えると思うのですが、sh -x で確認して見ると消えてません。
これで正しく書けているんでしょうか?勉強不足ですみませんがよろしくお願い致します。

202 名前:login:Penguin mailto:sage [2008/06/20(金) 08:28:49 ID:PYgL06kk]
evalに渡すと消えるという意味なら。

tmp=`eval perl -e "'"'$a = "'"'""$i""'"'"; if ( $a=~  /^\S+(\S{1})$/ ) { print "s${ 1 }x_player" }'"'"`

203 名前:login:Penguin mailto:sage [2008/06/20(金) 09:48:11 ID:mQhh6bQc]
tmp=$(perl -e 'print "s${1}x_player" if $ARGV[0]=~/^\S+(\S{1})$/' "$i")



204 名前:login:Penguin mailto:sage [2008/06/21(土) 01:08:40 ID:lACEyUp0]
shでスクリプトを走らせている時に
スクリプト内でスーパーユーザの権限を得るにはどうやったらいいのでしょうか

スクリプトにsuを埋め込むとスクリプトが止まってしまって
exitしてから再びスクリプトが動き出すのですが
権限だけ持たせてスクリプトをそのまま走らせたいと思っています
何か手は無いでしょうか

205 名前:login:Penguin mailto:sage [2008/06/21(土) 01:11:38 ID:4k/SNXDG]
>>204
sudo

206 名前:login:Penguin mailto:sage [2008/06/21(土) 01:42:03 ID:EyYhn7dK]
リサ

207 名前:login:Penguin mailto:sage [2008/06/21(土) 01:49:53 ID:lACEyUp0]
>>205
ありがとうございます

(自分にとっては)有用なスクリプトが組めましたm(_ _)m
感謝の極みです

208 名前:login:Penguin mailto:sage [2008/06/21(土) 12:58:15 ID:9C5PYE0l]
ふとした疑問だが、スクリプト内でスーパー・ユーザにスイッチするのと、スクリプト自体をスーパー・ユーザ専用にするのと、どちらが安全なのだろう。

209 名前:login:Penguin mailto:sage [2008/06/21(土) 13:28:05 ID:ESYd9xh6]
>>208
運用の仕方によって変わるでしょ。
一概にどちらが安全とか言えないよ。

210 名前:login:Penguin mailto:sage [2008/06/22(日) 13:34:22 ID:IsXP6W78]
標準出力は標準出力のままで標準エラーだけをパイプしたいのですが
どのようにすればよいですか?(sh)


211 名前:login:Penguin mailto:sage [2008/06/22(日) 13:38:00 ID:aBc+5bz2]
exec 3>&1
(echo stdout; echo stderr >&2) 2>&1 1>&3 | rev

212 名前:210 mailto:sage [2008/06/22(日) 13:59:15 ID:IsXP6W78]
>>211
どうもありがとうございました。

213 名前:login:Penguin [2008/06/22(日) 16:57:49 ID:3HpeFvyL]
あれ?更新されてない




214 名前:login:Penguin [2008/06/22(日) 17:03:12 ID:3HpeFvyL]
rsyncをあえてつかわずローカルでのWEBサイトの更新を別のPCへFTP(put)
したいのですが混乱してきましたどなたかわかりますでしょうか?
#!bin/sh
#pukiwiki内のファイルで更新のあったファイルのあぶりだし。
echo = "`ls --full-time -F`" > fulltime
awk '{print $6$7}' /var/www/html/pukiwiki/fulltime
awk '{print $6$7}' /var/www/html/pukiwikibk/fulltime2
diff=diff /var/www/html/pukiwiki/fulltime /var/www/html/pukiwikibk/fulltime2
#diffの中身が空なら抜ける
if [ "$diff"-eq /dev/null ];then
logout
#diffの内容がディレクトリなら再度中身のファイルの更新がないかを確認。
#diffの中から$10のファイル名を取り出す

215 名前:login:Penguin mailto:sage [2008/06/22(日) 17:04:18 ID:G5GD5xl+]
>>214
lftp使え。

216 名前:login:Penguin [2008/06/22(日) 17:13:28 ID:3HpeFvyL]
わかりました。ありがとうございます。lftp調べてみます。

217 名前:login:Penguin [2008/06/22(日) 17:19:23 ID:3HpeFvyL]
ローカルになく、リモートにのみあるファイルを削除したいときは
mirror -R -e

mirror -e
などできるみたいですが、
ローカルで更新されたファイルのみアップといったこともできるのでしょうか?

218 名前:login:Penguin [2008/06/22(日) 17:47:05 ID:3HpeFvyL]
#!/bin/sh

cd /var/www/html/pukiwiki
lftp -e "mirror -e -vvv pukiwiki; bye" ftp:XX.XX.XX.XX/var/www/html/pukiwiki

これだけでいけますでしょうか?

219 名前:login:Penguin mailto:sage [2008/06/22(日) 18:16:38 ID:7nMjRrut]
n 更新されたのみ

mirror -Rn


220 名前:login:Penguin mailto:sage [2008/06/22(日) 22:21:11 ID:R/kAIh0A]
ubuntu初心者スレから誘導されました。

成形した時刻の文字列をクリップボードにコピーするシェルスクリプトを作りたいのですが
まずdateで時刻を取得出来ることがわかりました。それで日付や時間を成形してみました。
で、その取得した時刻をクリップボードにコピーさせる方法が分かりません。

ubnutuは8.04です。よろしくお願いします。

221 名前:login:Penguin mailto:sage [2008/06/22(日) 22:29:53 ID:G5GD5xl+]
>>220
xclip が使える。ただし日本語が通らない。
ruby がクリップボード操作できるみたい。

222 名前:login:Penguin mailto:sage [2008/06/22(日) 23:37:38 ID:MIeLc8tv]
シェルスクリプトで正規表現使いたいのですが、
末尾が .jp のものだけマッチさせたい場合は
$\.jp
でよろしいのでしょうか?

223 名前:login:Penguin mailto:sage [2008/06/22(日) 23:55:19 ID:iLaxDbCt]
シェルだけで正規表現って扱えるの?



224 名前:login:Penguin [2008/06/23(月) 00:09:49 ID:xSXSaj7v]
>>223
[[ 'www.example.jp' =~ '\.jp$' ]] && echo OK

225 名前:login:Penguin mailto:sage [2008/06/23(月) 00:26:20 ID:bFQcdw6C]
>>223
man expr

226 名前:login:Penguin [2008/06/23(月) 07:14:57 ID:xSXSaj7v]
>>225
expr は外部コマンドじゃね?

227 名前:login:Penguin mailto:sage [2008/06/23(月) 07:23:33 ID:/dfygF5Q]
bash 3.2.33だが>>224だとOKと表示されない件について

228 名前:login:Penguin mailto:sage [2008/06/23(月) 07:55:06 ID:xSXSaj7v]
quote しちゃだめになったのか。

[[ 'www.example.jp' =~ \.jp$ ]] && echo OK

229 名前:login:Penguin mailto:sage [2008/06/23(月) 08:04:56 ID:E3xyu4wD]
>>221
そうですか。日本語通らないですか。
rubyがいけるならPythonもいけるのかな。探してみます。ありがとうございます。

230 名前:login:Penguin mailto:sage [2008/06/23(月) 13:11:35 ID:R4pyjC2R]
>>229
xselでおk

231 名前:login:Penguin mailto:sage [2008/06/23(月) 20:44:19 ID:E3xyu4wD]
>>230
さっそく入れて使ってみました。
中クリックで文字列を選択した内容をそのまま貼り付けれてものすごく便利でした!
いいものを知りました。ありがとうございます。

で本題
スクリプトはこんな感じまで書きました。
#!/bin/bash

y=`date +%Y`
m=`date +%m`
d=`date +%d`
t=`date +%T`
DATE= $y/$m/$d/" "$t
echo $DATE

これで、chmod -x で権限を与えて実行すると、現在の時間を返してくれるようになりました。
が、xselを使って$DATEをクリップボード(かプライマリ)にコピーする方法が分かりませんでした。--inputは変数が代入出来ないようですし。
xsel -p  < $DATE ではうまくいきませんでした(ファイルじゃないので当たり前ですか)

232 名前:login:Penguin mailto:sage [2008/06/23(月) 20:57:33 ID:II3EglSV]
>>231
>xsel -p < $DATE ではうまくいきませんでした

echo $DATE > xsel -p


233 名前:login:Penguin mailto:sage [2008/06/23(月) 21:41:12 ID:t++FsyID]
echo $DATE | xsel -i



234 名前:login:Penguin mailto:sage [2008/06/23(月) 21:51:30 ID:E3xyu4wD]
>>232
どうもうまくいきませんでした。
修正したものを実行すると、〜.shと同じディレクトリに xsel という中身が"-p"の入ったファイルが作成されてました。

235 名前:login:Penguin mailto:sage [2008/06/23(月) 21:54:47 ID:eV6dG77Y]
>>234 look asap >>233

236 名前:login:Penguin mailto:sage [2008/06/23(月) 22:05:35 ID:E3xyu4wD]
>>233
こちらもうまくいきませんでした。

実行すると、以下の結果が表示されました。

./date_clipboard.sh: 7: 2008/06/23/ 21:52:49: not found

/が入っていると、ディレクトリと認識してしまうのではないかと思って、/を外して数字だけ並んだものも作って見ましたが、だめでした。 同じく echoで$DATEの中身とnot foundと出されました。

>>235
こういうことでしょうか?

#!/bin/bash

y=`date +%Y`
m=`date +%m`
d=`date +%d`
t=`date +%T`
DATE= $y/$m/$d/" "$t
look asap
echo $DATE | xsel -i

これを実行しても、同じく、echoで$DATEの中身とnot foundと出ました。

237 名前:login:Penguin mailto:sage [2008/06/23(月) 22:18:40 ID:t++FsyID]
#!/bin/sh
date "+%Y/%m/%d %T" | xsel -i


238 名前:login:Penguin mailto:sage [2008/06/23(月) 22:26:25 ID:E3xyu4wD]
>>237
おお! 見事に表示されました。
dateごと渡してやればよかったのですね。勉強になりました。
ありがとうございました。

239 名前:232 mailto:sage [2008/06/23(月) 22:40:24 ID:7JKTU8Gt]
ごめん! (汗)

240 名前:login:Penguin mailto:sage [2008/06/23(月) 22:50:21 ID:xSXSaj7v]
>>238
> dateごと渡してやればよかったのですね。
別に echo $DATE | xsel -i でもいいよ。

241 名前:login:Penguin mailto:sage [2008/06/23(月) 22:51:35 ID:xSXSaj7v]
>>236
> DATE= $y/$m/$d/" "$t
問題はここだ。
= の後の空白が余分。

むしろ
DATE="$y/$m/$d/ $t"
と書くべき。

242 名前:login:Penguin mailto:sage [2008/06/24(火) 08:29:39 ID:/ei8InYp]
>>239
いえいえ。

>>240-241
空白がまずかったのですね。気がつきませんでしたorz
ダブルクオーテーションでくくると文字列がそのまま出てくる気がして、
> DATE= $y/$m/$d/" "$t の途中の" "は空白を出力したつもりでしたが、全体をくくってやってもよかったのですね。実行して確認しました。

#!/bin/sh

y=`date +%Y`
m=`date +%m`
d=`date +%d`
t=`date +%T`
DATE="$y/$m/$d/ $t"
echo $DATE | xsel -b -i

(xsei -b -iでクリップボードにもコピー出来るようにしてあります。xsel -pでも動きました。)
見え栄は>>237のほうがいいですねw

勉強になりました。ありがとうございました!



243 名前:login:Penguin mailto:sage [2008/06/24(火) 08:33:49 ID:/ei8InYp]
一部ミスりました

× ダブルクオーテーションでくくると文字列がそのまま出てくる気がして、
○ ダブルクオーテーションでくくると文字列がそのまま出てくる気がして、 全体をくくらずにしていました。




244 名前:login:Penguin mailto:sage [2008/06/24(火) 09:36:52 ID:7q12wxxB]
>>242
> ダブルクオーテーションでくくると文字列がそのまま出てくる気がして、
www.linux.or.jp/JM/html/GNU_bash/man1/bash.1.html#lbAQ

YEAR=2008
echo "$YEAR"
echo '$YEAR'

245 名前:login:Penguin mailto:sage [2008/06/24(火) 10:37:39 ID:/ei8InYp]
>>244
そうだったのですか、シングルクオーテーションは文字として出てきて、ダブルクオーテーションでは、$も例外として、$が機能すると言うことですか。
いやはや知らないことだらけでした。勉強になります。ありがとうございます。

246 名前:login:Penguin mailto:sage [2008/06/24(火) 19:18:26 ID:GHnoP+if]
初心者の書くスクリプトは、むしろダブルクォートを忘れて
インジェクション的な事故多発なわけですがw

if [ x"$HOGE" == x"DQN" ] ; then

ちゃんとこういう風にまで保護されているスクリプトは稀。

247 名前:login:Penguin mailto:sage [2008/06/24(火) 19:36:34 ID:RnXDPQy/]
俺さ、その x が何のためにあるのか、以前から不思議なんだ。

if [ "${HOGE}"="DQN" ] ; then

との違いは何?

248 名前:login:Penguin mailto:sage [2008/06/24(火) 19:40:10 ID:y8G0f9r3]
$HOGEが未定義の場合どうなるんだ?

249 名前:login:Penguin mailto:sage [2008/06/24(火) 19:41:45 ID:7q12wxxB]
>>247
= と == は違う。
== の前後に空白が必要。

その上で、$HOGE が空文字列の場合にエラーになるのを回避するため。

250 名前:login:Penguin mailto:sage [2008/06/24(火) 19:50:56 ID:GHnoP+if]
>>247 の = は == の typo でしょうw

で、"${HOGE}" == "DQN" だったら $HOGE が未定義でもエラーにならない。
x"$HOGE" == x"DQN" との違いは漏れは知らん。ジジイ仕様の /bin/sh とかが
あって "${HOGE}" できない場合があるんじゃない?

× export HOGE="DQN"
○ HOGE="DQN"; export HOGE

こんな環境もあるぐらいだからなぁ・・・・・・

251 名前:login:Penguin mailto:sage [2008/06/24(火) 20:00:18 ID:7q12wxxB]
>>250
> で、"${HOGE}" == "DQN" だったら $HOGE が未定義でもエラーにならない。
bash はそうだけど、エラーになるシェルもある。
Solaris の /bin/sh とか。

252 名前:login:Penguin mailto:sage [2008/06/24(火) 20:07:28 ID:GHnoP+if]
やはり Solaris かw そんな気はしていた。

普段は Linux 使ってるから必然と bash になっちゃうんだよね。sh で出来たっけ?
とか結構記憶が曖昧になってしまって鬱。場合にもよるけど、ポータビリティを
意識してなーんとなく昔ながらの書き方を守ってる漏れ・・・・・

あえて #!/bin/bash って書くべき?w

253 名前:login:Penguin mailto:sage [2008/06/25(水) 02:03:39 ID:QRiAgjkv]
Solarisの古いshなんて無視していいだろ。
POSIX shell (ash, bash, ksh, ...) で動けばいいよ



254 名前:login:Penguin mailto:sage [2008/06/25(水) 03:24:07 ID:CH5fnn3k]
実際 そんなに拡張されてないし でしょw
#!/bin/bash
でいいよね。

255 名前:login:Penguin mailto:sage [2008/06/25(水) 03:42:02 ID:r4HiK5gk]
>>254
スクリプト動かすのに重量級のbashなんか使わないだろ。
#!/bin/sh
で十分。

256 名前:login:Penguin mailto:sage [2008/06/25(水) 04:07:08 ID:CZiflGY7]
>>255
先生!うちの環境では
file /bin/sh
/bin/sh: symbolic link to `bash'
です.どうすればいいですか?

257 名前:login:Penguin mailto:sage [2008/06/25(水) 04:46:49 ID:N+m64wV+]
>>255 i486SX/16MHz

258 名前:login:Penguin mailto:sage [2008/06/25(水) 04:59:00 ID:CH5fnn3k]
だから もう 手じかな環境では
/bin/shはないでしょ。
/bin/shと書けばいちおー 互換モードで動くってだけで。

259 名前:login:Penguin mailto:sage [2008/06/25(水) 10:58:55 ID:NWVIKvCl]
FreeBSDの事もあるしshで書いておこうってだけじゃね

260 名前:login:Penguin mailto:sage [2008/06/25(水) 11:25:51 ID:r4HiK5gk]
debian 系だと
$ file /bin/sh
/bin/sh: symbolic link to `dash'

~$ ls -l /bin/bash /bin/dash
-rwxr-xr-x 1 root root 686K 2008-05-13 03:33 /bin/bash*
-rwxr-xr-x 1 root root 79K 2008-03-12 20:22 /bin/dash*

サイズが全然違う。

261 名前:login:Penguin mailto:sage [2008/06/25(水) 11:46:13 ID:e3mj3BLL]
別にどっちかに決める必要なんてない。
portabiltiy が必要なスクリプトは protable に書く。
そうでなければ bash 依存な書き方をしてもいい。
それだけのこと。

262 名前:login:Penguin mailto:sage [2008/06/25(水) 12:06:01 ID:foNddTWJ]
>>256
ぶっちゃけbashはzshよりも遅い。軽量のashなんかとは比べるべくもなく。

ログインシェルとしてなら使い勝手云々ってのがあるけど、
/bin/shをbashにしておくメリットはあんまないよ。

263 名前:login:Penguin mailto:sage [2008/06/25(水) 12:36:18 ID:Qkn+OwYP]
なんかもっともらしいウソが垂れ流されてるぞ。

>>251
>> で、"${HOGE}" == "DQN" だったら $HOGE が未定義でもエラーにならない。
>bash はそうだけど、エラーになるシェルもある。
>Solaris の /bin/sh とか。

solaris ではたしかにエラーになるけど、それは $HOGE が未定義だからではない。
== という演算子自体がないため。
互換性を考えると文字列の比較には == ではなく = を使う。
= なら $HOGE が未定義でもエラーにならない。

x"$HOGE" のようにするのは、$HOGE が -f とか ! のような文字列だったときに
別の意味に解釈されないようにする対策。



264 名前:login:Penguin mailto:sage [2008/06/25(水) 17:32:32 ID:PrRjFF/A]
マジッスカ
ちょっとコンビニで Soliras 買ってくる><

265 名前:login:Penguin mailto:sage [2008/06/25(水) 20:22:07 ID:g812rZ0o]
>>251
Sun4 で試したら、未定義でもエラーにならんかったよ。

$ cat test.sh
uname -rvs
VAR="VAL"
[ "${VAR}" = "VAL" ] && 'true'
[ x"${VAR}" = x"VAL" ] && 'true'

unset VAR
[ "${VAR}" = "VAL" ] && 'true'
[ x"${VAR}" = x"VAL" ] && 'true'
$ /bin/sh -x test.sh
+ uname -rvs
SunOS 4.1.4-JL 2
VAR=VAL
+ [ VAL = VAL ]
+ true
+ [ xVAL = xVAL ]
+ true
+ unset VAR
+ [  = VAL ]
+ [ x = xVAL ]

266 名前:login:Penguin mailto:sage [2008/06/26(木) 15:09:48 ID:ZojLTS6b]
お邪魔します。

シェルスクリプトを走らせて、あるシェルスクリプトを起動させるようにするにはどういう書き方したらよいですか。
また、そのシェルスクリプトを走らせた結果を変数にぶちゅっと入れる書き方はどうしたらいいですか。

267 名前:login:Penguin mailto:sage [2008/06/26(木) 15:35:52 ID:ZojLTS6b]
事故解決しますた。すいません。

268 名前:login:Penguin mailto:sage [2008/06/26(木) 22:18:06 ID:ZPxwXTvf]
ぶちゅっ


269 名前:login:Penguin [2008/06/28(土) 20:17:43 ID:/ZK60QF9]
シェルでエロゲをつくるためにはどうしたらいいですか

270 名前:login:Penguin mailto:sage [2008/06/28(土) 21:21:44 ID:MDU5A1fa]
エロゲって何ですか

271 名前:login:Penguin [2008/06/28(土) 22:52:16 ID:/ZK60QF9]
linuxがwindowsに唯一負けてるのがエロゲです

272 名前:login:Penguin mailto:sage [2008/06/28(土) 23:29:11 ID:fs03Gty7]
だとすれば、sh スクリプトでなく、BAT ファイルで作ると良いのではないでしょうか

273 名前:login:Penguin [2008/06/28(土) 23:48:10 ID:ZJYzC1iZ]
windowsに対抗するため、Linuxにエロゲを導入します
また、複数のplayerがエロゲサーバにtelnetしてplayすることを想定としているため
GUIではなくCUIで行いたいと思っています



274 名前:login:Penguin mailto:sage [2008/06/29(日) 00:53:49 ID:nwf205tS]
>>273
CUIでいかにエロさを出すかが問題だ

絵もない本当のノベルゲームでいいっていうなら、
ひたすらechoとifとかwhileとかcaseを駆使すればできる気がするけど

今どきtelnetってのもツッコミどころだけどな

275 名前:login:Penguin mailto:sage [2008/06/29(日) 01:02:35 ID:wXyVSJIl]
Nethackはエロゲ
異論は認める






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<243KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef