- 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はエロゲ
異論は認める
|

|