- 1 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 11:53:21.38 ID:BBiLRgnj0.net]
- !extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512 シェルスクリプトに関する総合スレッドです。 スレ立て時は以下の文を先頭行に加えて下さい。 後のつけ忘れ防止の為に複数行重ねて追加推奨 !extend:on:vvvvv:1000:512 全般 ・荒しは無視しましょう。 ・丁寧な姿勢を心掛けましょう。 ・ネチケット(死語)を意識しましょう。 前スレ シェルスクリプト総合 その28 mevius.5ch.net/test/read.cgi/tech/1532397676/ VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
- 707 名前:デフォルトの名無しさん mailto:sage [2018/11/24(土) 17:36:50.26 ID:b7tmfxF40.net]
- >>706
falseがビルトインって話じゃなかったの?w
- 708 名前:デフォルトの名無しさん mailto:sage [2018/11/24(土) 17:38:22.47 ID:b7tmfxF40.net]
- > ほう,それは知らなかった。pws=0にしたGoogle検索英語版では${VAR+:}が多いように見受けられるな。
"${VAR+:}"で検索したけど5件しかなかったよ? "${VAR+x}"だと約 3,410,000 件
- 709 名前:デフォルトの名無しさん mailto:sage [2018/11/24(土) 17:41:59.00 ID:I8hvszb00.net]
- ちなみに「すべてのシェル」と言うくらいなのだから,
主要でありPOSIX互換を謳うGNU Bash, Zsh, Debian Almquist shell(dash), yash, MirOS ksh(mksh)くらいについては知らべてるとは思うものの, POSIXの記述を知らないようなので, 一応,これら5つのシェルがtest(1)ユーティリティを組込コマンドにしているという根拠を以下に挙げておこう。 GNU Bash: https://www.gnu.org/software/bash/manual/html_node/Bourne-Shell-Builtins.html#Bourne-Shell-Builtins Zsh: zsh.sourceforge.net/Doc/Release/Shell-Builtin-Commands.html#Shell-Builtin-Commands dash: man7.org/linux/man-pages/man1/dash.1.html yash: https://yash.osdn.jp/doc/ja/#alpha-order mksh: https://www.mirbsd.org/htman/i386/man1/mksh.htm
- 710 名前:デフォルトの名無しさん mailto:sage [2018/11/24(土) 17:44:33.96 ID:I8hvszb00.net]
- >>707
以下>>704の書き込みを引用 > > testコマンドはPOSIXにおいては外部コマンド。尤もBashやZshではシェルに組み込まれてるけど。 > 全てのシェルで [ はビルトインだ > シェルに組み込まれていないというものがあれば教えてくれ ということでfalse(1)ユーティリティの話ではなく test(1)ユーティリティがシェル組込みかどうかという話でした。
- 711 名前:デフォルトの名無しさん mailto:sage [2018/11/24(土) 17:47:23.27 ID:I8hvszb00.net]
- ちなみにfalse(1)ユーティリティもPOSIXにおいてシェル組込みとして定められている訳ではない。
- 712 名前:デフォルトの名無しさん mailto:sage [2018/11/24(土) 17:49:01.92 ID:362BcdsM0.net]
- となると処理速度的にはどっちが良いの?
- 713 名前:デフォルトの名無しさん mailto:sage [2018/11/24(土) 17:50:38.66 ID:b7tmfxF40.net]
- いや、俺が言ったことを復唱されてもこまるんだがw
ちなみにビルトインかどうかはPATHを空にして実行できるかどうかでわかるよ builtinやtypeがないシェルもあるからね
- 714 名前:デフォルトの名無しさん mailto:sage [2018/11/24(土) 17:51:02.76 ID:b7tmfxF40.net]
- >>712
大差なし
- 715 名前:デフォルトの名無しさん mailto:sage [2018/11/24(土) 18:05:17.83 ID:I8hvszb00.net]
- >>712
大差ないけど,ただ,もしもPOSIXで定めらていないのを理由にしてtest(1)ユーティリティを組み込んでいないシェルがあったとして そのシェルにおいては変数展開(これは確実にシェルが仕事する)のほうがtest(1)ユーティリティをforkしてexecするより若干早いので 速度は${VAR+:}のほうが上。
- 716 名前:デフォルトの名無しさん mailto:sage [2018/11/24(土) 18:06:48.53 ID:I8hvszb00.net]
- >>713
typeはPOSIXで定められているので,もしないシェルがあればPOSIX互換ではない。 つまり「ビルトインコマンド」なんていう概念はないかもしれないので,そんなことを調べるのは無駄に思えるな。
- 717 名前:デフォルトの名無しさん mailto:sage [2018/11/24(土) 19:13:13.38 ID:b7tmfxF40.net]
- へー、poshはPOSIX互換じゃなかったのか
>Debian Policy に準拠した普通のシェル >posh は、pdksh の軽装版であり、Debian ポリシーの準拠を目指し、 いくつかの特別な機能を付け加えたものです。 > >警告: Debian の /bin/sh スクリプトの多くは、実際はポリシーに準拠していると は限りませんので、 >posh を /bin/sh として使うと破損箇所が判明するかもしれま せん。 って書いてある割に大したことないな
- 718 名前:デフォルトの名無しさん mailto:sage [2018/11/24(土) 20:44:49.31 ID:I8hvszb00.net]
- まあ ここまでPOSIX POSIX連呼しときながらアレだけども,
別にシェルってPOSIX shに準拠してる必要性なんてまったくないよなw poshも「POSIX互換じゃないシェル」として,便利に使えるようになればそれでいい。 実際,俺は使っていないものの,同級生にはfishを勧めてる。
- 719 名前:デフォルトの名無しさん mailto:sage [2018/11/24(土) 20:55:10.29 ID:32uSmIhta.net]
- ポジクッス警察がいるから多少はね?
- 720 名前:デフォルトの名無しさん mailto:sage [2018/11/24(土) 20:57:06.31 ID:b7tmfxF40.net]
- それじゃ俺も言っておかなきゃいかんのか?
まあ ここまでPOSIX POSIX連呼しときながらアレだけども, 別にシェルってPOSIX shに準拠してる必要性なんてまったくなくて POSIXに準拠していなくても、現実にPOSIX互換の標準シェルとして デフォルトシェルで採用されているのであればそれに対応すべきだと思っている だから、dash、(busybox)ash、bash、ksh あたりは対応必須で zsh、posh、yash、あたりは優先度が低い。mksh、pdkshは デフォルトシェルとして採用されている事例があるのかわからんが
- 721 名前:デフォルトの名無しさん mailto:sage [2018/11/24(土) 20:58:50.94 ID:b7tmfxF40.net]
- 俺は現実主義なんでね。標準とか仕様がどうこうよりも
現実としてそれは選択肢にならないのであれば、選択肢にならないし 非標準でも選択肢としてなり得るのならそれを使う
- 722 名前:デフォルトの名無しさん mailto:sage [2018/11/24(土) 23:48:23.42 ID:u7Q7GReoM.net]
- ポジコレ棒で葬ってやんよ
- 723 名前:デフォルトの名無しさん mailto:sage [2018/11/25(日) 07:40:30.00 ID:rsPEFWOD0.net]
- もっと面白い書き込みして、どうぞ。
- 724 名前:デフォルトの名無しさん mailto:sage [2018/11/25(日) 12:05:00.87 ID:Yow09MRJ0.net]
- >>715
その前提条件で言えば false も組み込みじゃないかもしれないのだから同じじゃないの? 変数が定義されていれば false は実行されないけど、未定義かどうかを確認したいから 実行するわけで。 ただ、fork and exec に関して言えば test コマンドが 1.1ms, false コマンド は 0.8ms 程度 (コマンドバイナリのテキストセクションがメモリキャッシュされている場合で、実行環境は Intel Xeon E3-1220 3.1GHz/Linux kernel 4.15.0/glibc 2.27)。何千回も実行する様なケース なら違いが分かるかも。
- 725 名前:デフォルトの名無しさん mailto:sage [2018/11/25(日) 12:16:11.88 ID:wMoGqmE60.net]
- POSIXでビルトインの方が速いって決まってるんだっけ?
- 726 名前:デフォルトの名無しさん mailto:sage [2018/11/25(日) 12:29:43.54 ID:nRWf72Y30.net]
- >>725
外部コマンドはforkが発生するから結果的にビルトインの方が速い
- 727 名前:デフォルトの名無しさん mailto:sage [2018/11/25(日) 12:32:22.92 ID:wMoGqmE60.net]
- いやPOSIXでどうなっているかの話だよ
- 728 名前:デフォルトの名無しさん [2018/11/25(日) 13:54:00.21 ID:eaHucPl10.net]
- なんやこのバカwwww
- 729 名前:デフォルトの名無しさん mailto:sage [2018/11/25(日) 14:01:17.29 ID:nRWf72Y30.net]
- >>727
下のページをざっと見る限り規定されてないように思う オーバヘッドがある分遅いのは自明だからPOSIXが云々は関係ない話だとは思う pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html
- 730 名前:デフォルトの名無しさん mailto:sage [2018/11/25(日) 18:36:53.00 ID:74eaLfxV0.net]
- 多分,なんでもPOSIX POSIXと言うので,からかってやろうとしたんだろう。
「お前の主張は全部POSIXに起源があるのか?」ってな。 まあ結果としてはネタにマジレスの嵐だった訳だがw
- 731 名前:デフォルトの名無しさん [2018/11/26(月) 12:25:16.95 ID:RdZe26lCr.net]
- 必死すぎる言い訳のせいで逆にひかれてしまったパターンw
- 732 名前:デフォルトの名無しさん [2018/11/26(月) 12:32:05.28 ID:mqDjQZG/M.net]
- とっても惹かれます
- 733 名前:デフォルトの名無しさん mailto:sage [2018/11/26(月) 12:44:40.04 ID:sgq1LDCF0.net]
- スプラッターやめろ
- 734 名前:デフォルトの名無しさん mailto:sage [2018/11/26(月) 17:46:57.26 ID:M+tccdiG0.net]
- echoでログを残そうとしています。
echo "メッセージ" > ログファイル で、ログファイルはNASに保存しようと考えているのですが NASがなんらかの原因で見えない場合、bashだと無視して処理を続けるのに cshだと、echoのとこで止まってしまいます。 止まらないようにする方法とかないですか?
- 735 名前:デフォルトの名無しさん mailto:sage [2018/11/26(月) 20:45:32.63 ID:dIk0IZ2NM.net]
- >>734
その「何らかの原因」を解決するのが先決じゃねーの? 素知らぬ顔でログ残ってないならそこで止まってもらった方が良くね?
- 736 名前:デフォルトの名無しさん [2018/11/27(火) 00:51:26.43 ID:IxTjeZ9T0.net]
- >>734
NFSならマウントオプションである程度はなんとかなるのでは? Windowsの共有(cifs)の場合は知らない。しかし何かオプションあると思うけどね。
- 737 名前:デフォルトの名無しさん mailto:sage [2018/11/27(火) 02:59:30.28 ID:vfcz+SK40.net]
- なぜかアホの子ってnfsをローカルファイルシステムと同様に信用しちゃうよね
- 738 名前:デフォルトの名無しさん mailto:sage [2018/11/27(火) 07:15:38.13 ID:EYppSGpIM.net]
- 唐突にお前の仲間の話しされても困る
- 739 名前:デフォルトの名無しさん mailto:sage [2018/11/28(水) 08:43:07.23 ID:lgqPOMnJr.net]
- >>737
信用ってのは常につながると思っちゃうってこと? それはいかんね
- 740 名前:デフォルトの名無しさん mailto:sage [2018/11/28(水) 09:03:44.81 ID:6Gc6vrWs0.net]
- NFS特有のエラーがあるとは思いもしなかったりするんだよな。
挙げ句の果てにファイルロックがうまく動かないとか言い出す。
- 741 名前:デフォルトの名無しさん mailto:sage [2018/11/28(水) 12:41:41.17 ID:V/2Czdkr0.net]
- 所詮、ネットワークを介したファイル共有だからね
ディスクはアクセスできない = 故障 と考えていいけど ネットワークは一時的な切断やエラー、大きな遅延が想定される だからリトライやタイムアウトといった処理を行う 通常のディスクアクセスを行うコードは、こういった ネットワーク特有の事象について考慮されてない場合が多い だから(NFSの設定により)ネットワーク通信が正常に完了 できるまで待ち続ける(プログラムはタイムアウトしないのでフリーズした状態) もしくは一時的な接続不良でエラー終了したりする
- 742 名前:デフォルトの名無しさん mailto:sage [2018/11/28(水) 20:10:37.32 ID:N04UITTm0.net]
- シェルスクリプトの関数の名前の直後の括弧って あれはshに
「これは関数の名前ですよ」って教えるためのものっていう認識でOK? foo() { echo foo } ↑こういうのの「()」。なんかCやらと同じように引数の指定とかができたらいいのにと 初心者ながら思ったんだけど そういう訳でもなさそうだし。
- 743 名前:デフォルトの名無しさん mailto:sage [2018/11/28(水) 20:12:50.29 ID:aLWNsKMba.net]
- えっ
- 744 名前:デフォルトの名無しさん [2018/11/28(水) 20:22:26.38 ID:wHjpMIAFa.net]
- 引数は $1, $2 とかで受け取る。
呼び出す側は普通のコマンド実行のように書く。
- 745 名前:デフォルトの名無しさん mailto:sage [2018/11/28(水) 20:31:09.87 ID:Vqd4vFOqM.net]
- >>742
ともかく ( とか、普通使わない文字を挟んでおかないと、 foo { だとただの引数になっちゃうから。
- 746 名前:デフォルトの名無しさん mailto:sage [2018/11/29(木) 13:01:23.15 ID:Msn7clch0.net]
- >>745
なるほど。 「(」はサブシェルの開始だと思ってたけど そうでもないんだね……。 シェルの構文ってちょっと難しいことすると途端に複雑怪奇になるな(俺の頭の問題かも知れんがw) 対話的な利用を前提にした設計だから仕方無いとは言え、Pythonみたいに対話状態でもバッチ状態でも扱いやすくできなかったのかな。
- 747 名前:デフォルトの名無しさん mailto:sage [2018/11/29(木) 13:04:56.47 ID:lCOis1qI0.net]
- 小学生が政治語ってるのを聞いてる気分だ
- 748 名前:デフォルトの名無しさん mailto:sage [2018/11/29(木) 14:34:26.85 ID:Msn7clch0.net]
- 「どうして解散するですか?」
- 749 名前:デフォルトの名無しさん mailto:sage [2018/11/29(木) 15:57:37.21 ID:QFUJhwUI0.net]
- Python を使えばいいんじゃないかな
- 750 名前:デフォルトの名無しさん mailto:sage [2018/11/29(木) 16:07:41.49 ID:lCOis1qI0.net]
- Pythonは構文が複雑怪奇すぎる
かっこは関数呼び出しの引数の開始だと思っていたのに 関数を定義するときにも使うらしい とかいうだろうな
- 751 名前:デフォルトの名無しさん [2018/11/29(木) 16:11:55.77 ID:qd4rCcG0M.net]
- wwwww
- 752 名前:デフォルトの名無しさん [2018/11/29(木) 19:19:50.88 ID:8tueZiBHa.net]
- そしてあらゆる言語が気に入らず、新たな言語がまた一つ作られるのであった。
- 753 名前:デフォルトの名無しさん [2018/11/29(木) 19:39:24.56 ID:qd4rCcG0M.net]
- − 世界には1,400もの競合するプログラミング言語があった −
「1,400だって!? バカげてる! み全ての用途をうまくこなす統一言語の開発が必要だ!」 「そのとおりだわ!」 やがて… − 世界には1,401もの競合するプログラミング言語があった − https://imgs.xkcd.com/comics/standards.png
- 754 名前:デフォルトの名無しさん mailto:sage [2018/11/29(木) 20:23:55.28 ID:DaeVxseX0.net]
- >>753
男女の仲違いでもう2個増えるんだろ?
- 755 名前:デフォルトの名無しさん mailto:sage [2018/11/29(木) 20:25:46.41 ID:dRsmoy+za.net]
- 新しいのを作るんじゃなくて既存のを潰さないとな
- 756 名前:デフォルトの名無しさん [2018/11/29(木) 20:45:38.03 ID:C+POVdju0.net]
- (中二なんかな・・・)
- 757 名前:デフォルトの名無しさん mailto:sage [2018/11/29(木) 21:43:22.71 ID:Msn7clch0.net]
- 中二だろうがなんだろうが良いソフトウェアを作ってくれればそれでいい。
- 758 名前:デフォルトの名無しさん [2018/11/29(木) 22:17:13.73 ID:C+POVdju0.net]
- >>757
そおやってすぐ他人に頼ろうとするからいつまでたってもクズなんやおまえ
- 759 名前:デフォルトの名無しさん mailto:sage [2018/11/30(金) 01:40:39.33 ID:ZZJKHSVT0.net]
- ワロタ
- 760 名前:デフォルトの名無しさん [2018/11/30(金) 08:21:31.28 ID:ShAjvwZw0.net]
- 目的を見失ってるよね
道具であるはずの言語そのものを作り出すってのは だからって、なんでもアセンブラってわけにもいかないが
- 761 名前:デフォルトの名無しさん [2018/11/30(金) 09:15:03.33 ID:vx8Iixcxa.net]
- タイヤは永遠に発明され続ける。
- 762 名前:デフォルトの名無しさん mailto:sage [2018/11/30(金) 09:32:04.72 ID:n+1J2GMZa.net]
- (車輪じゃね?)
- 763 名前:デフォルトの名無しさん [2018/11/30(金) 09:38:04.79 ID:vx8Iixcxa.net]
- あ、そうか。まあどっちでもいいが。
- 764 名前:デフォルトの名無しさん mailto:sage [2018/11/30(金) 09:40:18.92 ID:5+dLrTA80.net]
- 現代だって刀鍛冶とかいるじゃん
- 765 名前:デフォルトの名無しさん mailto:sage [2018/11/30(金) 09:53:55.88 ID:pEng5xY00.net]
- 発明、改良と生産は違う
タイヤ、車輪で行われてるのは、発明ではなくて生産 発明こそ行われなくとも、小規模な改良は続いている 刀鍛冶も生産だろう。改良している人がいるのかは知らんが。 様々なデザインの洋服など、改良しているわけじゃないが 新しいものを作るっていうのはなんというべきだろうね 生産なんだが古い、新しいという概念はある。 だけど好みの違いでしか無いので改良とも違う 多くのものは改良されて続けているが、改良するためには まず生産能力が必要。同じものを作れなければ改良はできないだろう
- 766 名前:デフォルトの名無しさん mailto:sage [2018/11/30(金) 10:02:51.33 ID:pEng5xY00.net]
- 今の言語は最高とまでは言えない。
いつしか高級言語への進化が止まって、 単なる改良しか行われなくなってしまった 高級言語を超える、超高級言語が必要 俺にはそのアイデアがあるが、なにぶん能力がないw 目的は、超高級言語の開発だが、そのためには まず言語が作れるようにならないといけないだろうな ちなみに超高級言語のアイデアとは、現在設計書として 自然文で書いてあるものをプログラム言語として 記述可能にしようというもの。今の言語はモジュールやクラス構造までは プログラム言語で記述できるが、プロジェクト全体の構造までは記述できない 例えば、Railsなどのフレームワークのmodelsやcontrollersといったディレクトリ構造は プロジェクトで決まっているにもかからわず、ドキュメントで書くしかない。 だからmodelsに置くべきものをcontrollersにおいたり、modelsではやっては いけないような処理をやることが出来てしまう。コンパイルエラーにも実行時エラーにもならない
- 767 名前:デフォルトの名無しさん mailto:sage [2018/11/30(金) 11:38:14.68 ID:n+1J2GMZa.net]
- 3行で
- 768 名前:デフォルトの名無しさん [2018/11/30(金) 12:29:51.33 ID:vx8Iixcxa.net]
- 超
高級言語が 必要
- 769 名前:デフォルトの名無しさん [2018/11/30(金) 12:30:21.78 ID:+/lt4tPpr.net]
- タイヤと
車輪は 同じもの
- 770 名前:デフォルトの名無しさん [2018/11/30(金) 12:47:31.33 ID:vx8Iixcxa.net]
- も
う 止めよう
- 771 名前:デフォルトの名無しさん mailto:sage [2018/11/30(金) 13:04:32.40 ID:iEacaeBh0.net]
- 実は
CASEツール です
- 772 名前:デフォルトの名無しさん mailto:sage [2018/11/30(金) 15:46:57.55 ID:ZZJKHSVT0.net]
- それずっと前にKnuthが実践してた文芸作譜と同じじゃね?
そしてアレは超絶面倒な作業。
- 773 名前: mailto:sage [2018/11/30(金) 23:23:00.81 ID:MkfLpznc0.net]
- >>766
>高級言語を超える、超高級言語が必要 ちょっとワクワクしてしまいましたことを、ここに告白いたします
- 774 名前:デフォルトの名無しさん mailto:sage [2018/12/01(土) 01:32:04.95 ID:3WCvWAVjM.net]
- 言語に縛られてるから駄目なんだよ
とか言ってみる
- 775 名前:デフォルトの名無しさん mailto:sage [2018/12/01(土) 02:53:09.42 ID:7CoKqMj50.net]
- 「縛られるのが好き」ってプログラマ、結構多いんですよ
とか言ってみる
- 776 名前:デフォルトの名無しさん [2018/12/01(土) 07:47:52.11 ID:U3mK8vlPr.net]
- 下ネタはもっと堂々と言わな逆にいやらしく感じるで
- 777 名前:デフォルトの名無しさん mailto:sage [2018/12/01(土) 10:18:14.73 ID:Ly5JuDld0.net]
- 全部縛ってヤってなんぼだと思うんです。
とか言ってみる。
- 778 名前:デフォルトの名無しさん mailto:sage [2018/12/01(土) 10:47:37.07 ID:Km1sjdO20.net]
- お前らくだらない話ばっかり盛り上がるな
- 779 名前:デフォルトの名無しさん [2018/12/01(土) 12:34:48.97 ID:U3mK8vlPr.net]
- さほど盛り上がっとらんやろw
人と関われよw
- 780 名前:デフォルトの名無しさん mailto:sage [2018/12/02(日) 02:44:47.66 ID:+c90NOTB0.net]
- まあ 使える言語は多いほうが手広いわな
- 781 名前:デフォルトの名無しさん mailto:sage [2018/12/02(日) 17:31:01.53 ID:OYZHkh2Or.net]
- >>776
知ってる一つの言語でなんでもしようとしちゃう っていう意味かとおもてた
- 782 名前:デフォルトの名無しさん mailto:sage [2018/12/02(日) 18:30:06.74 ID:RWr+AACs0.net]
- 自由に安くやってが最も困る。
- 783 名前:デフォルトの名無しさん mailto:sage [2018/12/04(火) 18:22:49.34 ID:VVlGsdy50.net]
- find(1)ユーティリティの速度に関しての疑問なんだけど
https://linuxjm.osdn.jp/html/GNU_findutils/man1/find.1.html#lbAO ここに 「検査 -name を -type の前に置いているのは、すべてのファイルに対して stat(2) システムコールを行う無駄を省くためである。」 とある。これは「find(1)は-nameのほうが-typeより処理速度が速い」ということを言っているよね。 実のところ手元ではfindが優秀すぎるのか知らんが-nameを-typeより前に書いても後に書いても速度に変化はなかった。 が 基本的にはfindで複数の条件を指定するときは-nameを先頭あたりに置いたほうがいいのかな。 findのソースコードを見てないので推測になるが-permや-newerもstat(2)を実行してるぽいので-nameより遅い筈。
- 784 名前:デフォルトの名無しさん mailto:sage [2018/12/04(火) 18:56:51.46 ID:bTQB60BC0.net]
- statが遅いと言うのも幻想
- 785 名前:デフォルトの名無しさん mailto:sage [2018/12/04(火) 19:07:42.58 ID:HBlgjyZNM.net]
- 最近のファイルシステムはreaddirでタイプが取得できるよ
- 786 名前:デフォルトの名無しさん [2018/12/06(木) 00:12:43.36 ID:pQ33EIUW0.net]
- >>783
linuxjm.osdn.jp/html/GNU_findutils/man1/find.1.html#lbAE -Olevel 1 これはデフォルトの最適化レベルであり、伝統的な動作に当たる。 式を並べ替えるとき、ファイル名にのみ基づいた検査 (たとえば、 -name や -regex) が先に実行されるようにする。
- 787 名前:デフォルトの名無しさん mailto:sage [2018/12/06(木) 09:10:09.33 ID:cC0kDT7D0.net]
- >>786
へえ!そうなんだ。 ってことはGNU/Linux使ってる限りは順番はどうでもいいんだな ありがとう。
- 788 名前:デフォルトの名無しさん mailto:sage [2018/12/06(木) 15:10:37.27 ID:cC0kDT7D0.net]
- 引数に一律にコマンドで操作を施したあと、それらをもう一度引数として扱うにはどうすればいいかな
$ a.sh arg1 arg2 arg3 みたいに起動されたとして$1,2,3にはarg1,2,3が入ってる。 これを$(echo $1 | tr '[:lower:]' '[:upper:]')みたいなコマンド置換を使ってARG1,2,3みたいに変形させる。 問題はこの後にa.shの中の別のコマンドに somecmd "$@" のような形でARG1,2,3を与えたいってこと。 while [ $# -eq 0 ]とshiftを使う普通のやりかたではループを抜けた後に$@が空になってしまう。 どうにかして引数の構造を維持したいんだけども……。
- 789 名前:デフォルトの名無しさん [2018/12/06(木) 16:06:47.11 ID:59uVculK0.net]
- >>788
eval set -- $(printf ' "$(printf "%%s" "$%d" | tr "[:lower:]" "[:upper:]")"' $(seq $#))
- 790 名前:デフォルトの名無しさん mailto:sage [2018/12/06(木) 16:38:57.36 ID:cC0kDT7D0.net]
- >>789
ありがとう。
- 791 名前:デフォルトの名無しさん mailto:sage [2018/12/12(水) 21:07:46.42 ID:7+bnD1C/0.net]
- ここかどうかわからんのだけど、メールの添付ファイルのテキストCSV部分を切り出してDB格納しようと思ったら、
シェルスクリプトでヘッダから切り出すしかない?
- 792 名前:デフォルトの名無しさん mailto:sage [2018/12/12(水) 21:36:28.16 ID:xr4it+i10.net]
- そういう専用ツールがないんだったらそうだろうな
- 793 名前:デフォルトの名無しさん mailto:sage [2018/12/13(木) 19:34:10.52 ID:Nc8J2Ufn0.net]
- >>550
別件でググっていたら、言及しているドキュメント見つけた ${1+"$@"} で動かないシェルもあるようだ web.sfc.wide.ad.jp/~sagawa/gnujdoc/autoconf-2.59/autoconf-ja_10.html > 最も有名なシェルの移植性の問題の一つは,`"$@"'との関連です.位置に 依存する引数が無いとき, > POSIXでは`"$@"'を何もないことと 等価になっていますが,オリジナルのUnixバージョン7の > Bourneシェルはその代 わりに`""'として扱い,この動作はDigital Unix 5.0のようにそれ以降の 実装でも提供されています. > > この移植性の問題を回避する伝統的な方法は,`${1+"$@"}'を使用する ことです. > 残念ながら,この手法はMac OS Xでも使用されている,Zsh (3.x と 4.x)では動作しません. > Bourneシェルをエミュレートしているとき,Zshは `${1+"$@"}'で単語の分離を実行します.
- 794 名前:デフォルトの名無しさん mailto:sage [2018/12/16(日) 07:48:44.86 ID:AoQUSXZn0.net]
- Bashってシングルクォートの内部でない限りバックスラッシュでシングルクオートを直接エスケープできるんだな。
マニュアルにも書いてないけど他人のスクリプト見て発見した。 $ squo=\' $ echo $squo ' ↑こうできる。Bashは楽でいいなぁ
- 795 名前:デフォルトの名無しさん mailto:sage [2018/12/16(日) 09:07:44.57 ID:rkLF3tWt0.net]
- >>794
水を差すようで悪いがposixで規定されているから他のシェルでも同じになる
- 796 名前:デフォルトの名無しさん mailto:sage [2018/12/16(日) 09:55:51.26 ID:0jv0YmXXa.net]
- なぜそれを特別に思ったのかわからんけど他は出来なかったりするの?
- 797 名前:デフォルトの名無しさん [2018/12/17(月) 19:35:33.43 ID:41bJ0tdVa.net]
- \ はエスケープだし使う事はあるので特に目新しい感じはしない。
sambaでファイルサーバ作ってWindowsからもファイルが書かれるような状況だとファイル名にスペースだの括弧だの普通に入れられてLinuxでログインしている端末からだとエスケープせざるを得なかったりする。 俺の場合はそれで一文字だけエスケープはよく使う。
- 798 名前:デフォルトの名無しさん mailto:sage [2018/12/17(月) 21:17:48.10 ID:lO+98ZHR0.net]
- Linuxで普通にファイル名にスペース入れられるんだから
sambaとかwindowsは全く関係ないけどね
- 799 名前:デフォルトの名無しさん mailto:sage [2018/12/17(月) 23:45:58.91 ID:LS1nUj7m0.net]
- CUI使いとGUI使いの違いだな
CUIでわざわざくそめんどくさいスペースなんぞを好き好んでは使わない。GUIではふつーにわかりやすくもなるから使う、普通に入れるのはあたりまえ
- 800 名前:デフォルトの名無しさん [2018/12/17(月) 23:52:42.27 ID:oCmK2PVR0.net]
- めんどくさくないけど?エアプなんキミ?
- 801 名前:デフォルトの名無しさん mailto:sage [2018/12/17(月) 23:54:51.53 ID:faSovs330.net]
- 有志のコードに
ファイル名が空白入りだと事故るものがあったような? 自分は 安全とって全部アンダーバー変換しておく
- 802 名前:デフォルトの名無しさん mailto:sage [2018/12/18(火) 00:10:28.35 ID:DLVg/wUV0.net]
- >>800
めんどくさいめんどくさくないはまあ人次第だけどな CUIでなんやかんやキーボード打ってる時に、エスケープしたり"や'囲ったり、そもそもスペースはもろもろコマンドでデリミッターだったりで、めんどくさいと思うけどな 人次第ではあるが、そゆのが想像できなずにエアプと言えるのがエアプっぽいと思わなくもない
- 803 名前:デフォルトの名無しさん mailto:sage [2018/12/18(火) 01:24:02.71 ID:2j/3pVMu0.net]
- >>801
有志って言ってもタダの素人だっただけの話じゃん
- 804 名前:デフォルトの名無しさん [2018/12/18(火) 03:02:35.05 ID:HuP+yDtL0.net]
- >>798
もちろんファイル名には / 以外は何でもありだが Linux だけ使ってると普通はあまりそういうファイル作らないじゃない。一々エスケープしなきゃならないしシェルスクリプトで扱いづらいし。 まあ趣味の問題ではあるけどな。
- 805 名前:デフォルトの名無しさん mailto:sage [2018/12/18(火) 03:52:25.12 ID:aYYQx5Ta0.net]
- libreofficeから「報告書 2018-12-18」という名前で保存することの何が面倒なのか?
- 806 名前:デフォルトの名無しさん mailto:sage [2018/12/18(火) 05:00:11.76 ID:CtnsxEVc0.net]
- うわあ
- 807 名前:デフォルトの名無しさん mailto:sage [2018/12/18(火) 05:48:13.89 ID:aYYQx5Ta0.net]
- ファイル名にスペースが使えるOSが悪いんだって言いたいのかな?w
|

|