シェルスクリプト総合 その29at TECH
シェルスクリプト総合 その29 - 暇つぶし2ch990:デフォルトの名無しさん
19/07/02 04:29:33.75 Atdu9zIi.net
こうすればいいだけw
なにか前処理
cat | {
 hoge=0
 while IFS= read -r line; do
  [ なにか ] && hoge=1
  ほかにいろいろ
 done
 if [ hoge = 0 ]; then
  前処理の調整
 else
  前処理の調整
 fi
}

991:デフォルトの名無しさん
19/07/02 04:33:37.38 uO4UDEG+.net
ほんとうにそれでいいと思うのか?w
なんか無理してんなと思うけど、POSIXに拘る人はそう書くのねと理解はした、お応えありがとう

992:デフォルトの名無しさん
19/07/02 04:35:32.93 Atdu9zIi.net
>>983
正しく動くし何も問題ない。
お前こそ、何も言い返せないのに
無理してレスしなくていいぞw

993:デフォルトの名無しさん
19/07/02 04:37:28.40 uO4UDEG+.net
いやあ、ああいうのが普通な人には何も言い返せないよ。てか「言い返す」って。喧嘩かなんかなのか?w

994:デフォルトの名無しさん
19/07/02 04:41:11.93 Atdu9zIi.net
喧嘩じゃなくて、お前の意見を言えって。
正しく動くだろ?
なにか問題が有るのか?

995:デフォルトの名無しさん
19/07/02 04:45:47.25 Atdu9zIi.net
シェルスクリプト初心者です。 { } の使い方がわかりません
とかいうなら、関数にでもすればいい
foo() {
 なにか前処理
 hoge=0
 while IFS= read -r line; do
  [ なにか ] && hoge=1
  ほかにいろいろ
 done
 if [ hoge = 0 ]; then
  前処理の調整
 else
  前処理の調整
 fi
}
cat | foo
お前の苦手な { } が無くてすんだぞw
サブシェルうんぬんの前に、関数の中で使う変数は、関数の中にとどめておけよ。
わかりやすいコーディングというのはこういうものだ

996:デフォルトの名無しさん
19/07/02 04:47:32.87 uO4UDEG+.net
そのサブシェルの中で後は全部やるんでしょ?必要な部分を。それで問題無いと思うなら、それでいいんじゃないの
「なんか無理してんな」ってのがわからないんだったらそれはそれでいいよ。元ネタと同じく、好みの問題。好みがわからないでしょ

997:デフォルトの名無しさん
19/07/02 04:50:12.51 Atdu9zIi.net
だから問題ないし、お前を含めて誰も問題があると言ってない。
お前さ、なんで自分で問題点を指摘できないのに
さも問題があるかのように装ってるわけ?
ばれないとでも思った?

998:デフォルトの名無しさん
19/07/02 04:50:38.17 uO4UDEG+.net
なにか頑張ってるな。そんな話じゃないよ
知識自慢臭しかもうしませんよ?そんなの自慢げというか馬鹿にしたいだけなのか知らんけど

999:デフォルトの名無しさん
19/07/02 04:53:12.30 Atdu9zIi.net
そんな話じゃないよ → じゃあどんな話なのか → 答えずに逃げる(笑)

1000:デフォルトの名無しさん
19/07/02 04:53:48.95 uO4UDEG+.net
問題がある問題がないの話じゃないよ。好みだよ好み
そう次々あれこれ考えなくてもw bash(など)の拡張使えばスッキリだろうにという

1001:デフォルトの名無しさん
19/07/02 04:54:45.55 Atdu9zIi.net
>>987のどこがスッキリとしてないというのか?
お前ならbashでどう書き直す?w

1002:デフォルトの名無しさん
19/07/02 04:57:00.91 uO4UDEG+.net
hoge=0
while IFS= read -r line; do
[ なにか ] && hoge=1
ほかにいろいろ
done < <(cat)
if [ hoge = 0 ]; then
前処理の調整
else
前処理の調整
fi
そもそもやりたいことがレベルが変わらずにそのままでスッキリだなwあとあとでなにか追加もとかもね

1003:デフォルトの名無しさん
19/07/02 04:58:47.96 Atdu9zIi.net
>>994
それ、俺が書いたfoo関数の中身を書いただけじゃねーかw
hoge=0
while IFS= read -r line; do
 [ なにか ] && hoge=1
 ほかにいろいろ
done
if [ hoge = 0 ]; then
 前処理の調整
else
 前処理の調整
fi
これで動くよ。
foo() {
 上のコード
}
cat | foo
ってやればいいだけ

1004:デフォルトの名無しさん
19/07/02 05:01:09.48 Atdu9zIi.net
Q.これをPOSIX準拠で書きたいのですが?
hoge=0
while IFS= read -r line; do
[ なにか ] && hoge=1
ほかにいろいろ
done < <(cat)
if [ hoge = 0 ]; then
前処理の調整
else
前処理の調整
fi
A. まず1. 関数にしましょう
foo() {
hoge=0
while IFS= read -r line; do
[ なにか ] && hoge=1
ほかにいろいろ
done < <(cat)
if [ hoge = 0 ]; then
前処理の調整
else
前処理の調整
fi
}
foo

1005:デフォルトの名無しさん
19/07/02 05:01:36.77 uO4UDEG+.net
いや、だから、お題に対してだけじゃなくな。普遍的にって言ってるでしょ
それが普遍的なのか?
なんで否定されたのをそんなに拘るねん。否定してんのは俺の好みじゃないってだけだぞ?w

1006:デフォルトの名無しさん
19/07/02 05:01:53.99 Atdu9zIi.net
2. bash依存の命令をなくしましょう。
foo() {
hoge=0
while IFS= read -r line; do
[ なにか ] && hoge=1
ほかにいろいろ
done
if [ hoge = 0 ]; then
前処理の調整
else
前処理の調整
fi
}
cat | foo
はい。完成です(笑)

1007:デフォルトの名無しさん
19/07/02 05:02:22.44 Atdu9zIi.net
>>997
だから < <(cat) を使う場合の普遍的な解答

1008:デフォルトの名無しさん
19/07/02 05:02:50.90 Atdu9zIi.net
やっぱり書き方を知らんだけだったな(笑)

1009:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 283日 5時間 28分 4秒

1010:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch