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


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



1 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 05:22:16.82 .net]
シェルスクリプトの総合スレです。
□お約束
・特記なき場合はBourne Shell(/bin/sh)もしくはPOSIX準拠の互換シェルがデフォルトです。
 bash/zsh/ksh/ash/dash/yash/poshなどの専用機能に依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
 FreeBSDユーザは/bin/shの正体がashなので注意。
・POSIXについてのリンクは https://en.wikipedia.org/wiki/POSIX にまとめられています
 最新の仕様はこちらへ pubs.opengroup.org/onlinepubs/9699919799/
 (左上の「Shell & Utilities」 から参照することができます。)
・v7 shに一番近くて、現役(?)のshは、OpenSolaris由来のheirloom sh。
  src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/
  heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
 (理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
 正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 awkまたはperlの方が適した

598 名前:名無しさん@お腹いっぱい。 mailto:sage [2022/08/15(月) 12:57:39.48 .net]
はいはい、原理主義ごくろうさん
使ってる本人次第でしかないのに押し付けとかホント原理主義者は

599 名前:名無しさん@お腹いっぱい。 mailto:sage [2022/08/15(月) 13:03:07.61 .net]
原理主義者は自惚れてるけど無知さがだだ漏れる
無知さを隠す誤魔化すためのマウント取りでしかない

600 名前:名無しさん@お腹いっぱい。 [2022/08/15(月) 13:26:13.07 .net]
リッチー大佐はC言語も使える
ただし分割コンパイルやmakeといった高度な機能は使わない
そんなものはなくてもシェルスクリプトでmake.shを作れば良いからだ

601 名前:名無しさん@お腹いっぱい。 mailto:sage [2022/08/15(月) 13:28:32.48 .net]
>>585
pkg install findutils

602 名前:名無しさん@お腹いっぱい。 mailto:sage [2022/08/15(月) 14:25:12.28 .net]
それ入れなくてもFreeBSDのfindで可能だけどな
がっつりGNU依存のにしても、それ入れる+ちょっとパス修正だけだわな

603 名前:名無しさん@お腹いっぱい。 mailto:sage [2022/08/15(月) 16:04:55.82 .net]
BSDのfindなら
find 場所 -print0 | xargs -0

604 名前:名無しさん@お腹いっぱい。 mailto:sage [2022/08/15(月) 20:36:03.11 .net]
持続性なら、もはやPOSIXよりも、Linuxのほうがいいのでは。

605 名前:名無しさん@お腹いっぱい。 mailto:sage [2022/08/16(火) 12:18:54.66 .net]
posixってソフトウェア規格でしょ?

606 名前:名無しさん@お腹いっぱい。 mailto:sage [2022/08/16(火) 12:28:09.90 .net]
ソフトウェア規格って?
公式ページでも見れば?



607 名前:名無しさん@お腹いっぱい。 mailto:sage [2022/09/19(月) 12:12:56.52 .net]
bashの関数で文字列を返したい場合、その関数名を文字列名称に使うことは仕様的に可能ですか?
function kotae () {
kotae=$1$2
}
kotae ab cd
echo $kotae

608 名前:名無しさん@お腹いっぱい。 mailto:sage [2022/09/23(金) 09:54:01.90 .net]
>>597
関数と変数の名前空間は別なので別に構わない、そして宣言(declare)してなければ変数concはグローバル
ややこしいのでそういう使い方のおすすめはしない

609 名前:名無しさん@お腹いっぱい。 mailto:sage [2022/09/23(金) 09:55:09.11 .net]
concはkotaeの間違い
頭の中で勝手に命名しちゃった

610 名前:名無しさん@お腹いっぱい。 mailto:sage [2022/09/24(土) 14:46:59.72 .net]
>>597
そのようなことをしたい場合はこうする

function kotae () {
printf -v $1 "%s" $2$3
}
kotae ret ab cd
echo $ret

611 名前:名無しさん@お腹いっぱい。 mailto:sage [2022/10/28(金) 02:25:37.28 .net]
bash 5.2.2(1)で最初の!だけ全角の
echo "abc!? xyz!"
は通るのに、半角にすると
echo "abcecho "abc!? xyz!"
>
になってしまいます。
一対の"で通すにはどうすればいいのでしょうか?

>>598-600
ありがとうございます。
printfのvオプションは初めて知りました。

612 名前:名無しさん@お腹いっぱい。 mailto:sage [2022/10/28(金) 13:13:38.41 .net]
ヒストリ機能
知らない/活用してないならオフにしておくべき
対話モードでしか機能しないから切っても特に問題はない

613 名前:名無しさん@お腹いっぱい。 mailto:sage [2022/10/29(土) 10:43:22.22 .net]
バックスラッシュをつけてエスケープ。

614 名前:名無しさん@お腹いっぱい。 mailto:sage [2022/11/06(日) 16:47:34.57 .net]
恥を忍んで質問させて下さい:
Larry Wallせんせーが書いたmetaconfigが普及せずに、同じ機能を果たす、
Autoconf/Autotoolsが普及した理由って何でしょう?
1)Perlよりm4の方が普及してた(どっちも文法はアレだけど)
2)というかPerl嫌いな人が少なくなかった
3)そのほか(開発モデルとか)

...imakeって何だっけ?

615 名前:名無しさん@お腹いっぱい。 [2022/11/06(日) 18:24:19.31 .net]
Autoconf/AutotoolsはGNUだからじゃね?しらんけど

616 名前:名無しさん@お腹いっぱい。 mailto:sage [2022/11/07(月) 01:26:02.31 .net]
rsync -avR -e ssh ...
rsync -avR -e ssh ...

このように6行以上書くとエラーになるんですがどうしてでしょう?

ssh: connect to host xxxx: Connection refused
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(228) [sender=3.2.3]



617 名前:名無しさん@お腹いっぱい。 mailto:sage [2022/11/07(月) 06:20:59.25 .net]
6行以上書いたからじゃね?

618 名前:名無しさん@お腹いっぱい。 mailto:sage [2022/11/07(月) 07:38:39.12 .net]
>>606
クライアントからの接続要求の処理中に次の接続要求が来たら待たせるようになっててそのバッファが5個だからそれ以上に次々と接続要求きたらConnection refusedを返すようになってる
少し時間を空ければ大丈夫なはず
てか、サーバーは何?

619 名前:602 mailto:sage [2022/11/07(月) 11:40:12.51 .net]
>>608
ありがとうございます。そうでしたか。
コマンドの内容と関係無さそうだったので迷いました。
接続先のサーバーは自宅のraspiです。

620 名前:名無しさん@お腹いっぱい。 mailto:sage [2022/11/08(火) 09:01:57.74 .net]
もしかしてファイル転送を多重化しようとしてるのかな そういうオプションがあったような気がするけどね rsync

621 名前:名無しさん@お腹いっぱい。 mailto:sage [2022/11/08(火) 23:15:42.53 .net]
はい、ぶたがみーるー
まあ、ここにも俺がいるわけですけどねw

622 名前:名無しさん@お腹いっぱい。 mailto:sage [2023/03/27(月) 06:41:34.11 .net]
バックしまーす

623 名前:名無しさん@お腹いっぱい。 mailto:sage [2023/06/18(日) 23:35:36.05 .net]
function YesNo {
local yn
while true; do
read -p " [Yes/No" "$1" "]: " yn
case $yn in
[Yy]*) return 0 ;;
[Nn]*) return 1 ;;
[Ee]*) if [ ! "$1" = "" ]; then return 2; fi ;;
esac
done
}

#main
YesNo ":いいえ /Else:その他"
echo $?
exit

実行すると、read: `:いいえ /Else:その他': 有効な識別子ではありません
とエラーになるのですが、どうすればいいでしょうか?

624 名前:名無しさん@お腹いっぱい。 [2023/06/19(月) 06:14:08.74 .net]
-p に渡っているのは " [Yes/No" だけで、残りの "$1" と "]: " は yn と同じく変数名として解釈されている

read -p " [Yes/No $1 ]: " yn

625 名前:名無しさん@お腹いっぱい。 mailto:sage [2023/06/23(金) 17:18:03.40 .net]
テスト

626 名前:名無しさん@お腹いっぱい。 mailto:sage [2023/08/23(水) 21:31:25.96 .net]
これってどうしてそうなのだろう?



627 名前:名無しさん@お腹いっぱい。 mailto:sage [2023/08/27(日) 18:57:22.73 .net]
readコマンドの引数にダブルクォートを使ってるからだぬ
だから>>614氏が指摘しているコトになってるぬ

628 名前:名無しさん@お腹いっぱい。 mailto:sage [2024/02/20(火) 08:47:58.81 .net]
先にBを算出することもなく変数の追加もなしで処理2を1箇所にすることは可能でしょうか?
if [ A ]; then
Bを算出
if [ B ]; then
 処理1
else
 処理2
fi
処理2
fi

629 名前:名無しさん@お腹いっぱい。 mailto:sage [2024/02/20(火) 14:15:04.07 .net]
2度目のエルスを書かなければいいだけじゃなくて?

630 名前:名無しさん@お腹いっぱい。 [2024/02/20(火) 17:32:39.42 .net]
>>619
「処理2」は2度処理される必要があるのかもしれん。例えば、ステータスを1 upするような。

出題者はおそらくelse節を冗長処理として、1度きりの処理の意味で「1箇所にする」と要件を定義したのだろう。
が、現実にこんなアバウト野郎のかもす空気を読んでウカウカとelse節を削ると、分かりにくいバグになったりする。

なので、問題を正確に記述しろ糞ボケと回答すべきだと思う。

631 名前:名無しさん@お腹いっぱい。 mailto:sage [2024/02/22(木) 06:05:52.23 .net]
>>618
else 足りなくね
処理2を1度または2度実行するのに、1箇所にしたいとかイミフ

!Aだったら処理2をする つもりなら、そのまま書けばいいだけだな。シェルスクリプトならw
Bを前もって算出できるなら、[ A -a B ] って本人も分かってるだろうが、Bを算出することもなくでも、そのまま書こうと思えばかけるわな、 [ A -a { Bを算出; B; } ] 風に

632 名前:名無しさん@お腹いっぱい。 mailto:sage [2024/02/22(木) 18:42:19.24 .net]
{ ifを何重にもネストしたブロック } || 処理2
みたいなのでも

633 名前:名無しさん@お腹いっぱい。 [2024/03/14(木) 17:20:13.74 .net]
while ...do
処理1
done <<=LIST=
リスト1
=LIST=

while ...do
処理2
done <<=LIST=
リスト1
=LIST=

てののリスト1を一つにできんべか。ただし、リスト1全てに対し処理1をし終えてから処理2を行なう必要があるので、

while ...do
処理1
処理2
done <<=LIST=

ではあかん。

634 名前:名無しさん@お腹いっぱい。 [2024/03/14(木) 18:05:33.59 .net]
ヒアドキュメントの中で変数を展開できます。

LIST_CONTENT="リスト1
...
"

while read s; do
printf '%s\n' "${s}"
done <<LIST
${LIST_CONTENT}"
LIST

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






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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