シェルスクリプト総合 その34

■ このスレッドは過去ログ倉庫に格納されています
2020/08/21(金) 15:17:55.64ID:mArnj/tT
シェルスクリプトに関する総合スレッドです。

全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。

シェルスクリプト総合 その33
https://mevius.5ch.net/test/read.cgi/tech/1584893550/
624デフォルトの名無しさん
垢版 |
2020/10/16(金) 16:40:16.10ID:HABswBQ5
シェルのスクリプトはシェルが実行している
シェルとはdashとかbashとかzshのこと
そのスクリプトをシェルが実行していないなら
それはシェルスクリプトではない
2020/10/16(金) 16:41:33.85ID:JU6AgX+H
>>623
いやぁ、そこは「スクリプトの今は○○だ!」って
お前が宣言するところだよ

宣言しちゃったら、間違ってたときに恥ずかしいから言えないんでしょ?
相手のミスを待つんじゃなくてさ、自分の意見を言ってみなよ
2020/10/16(金) 16:41:50.26ID:JU6AgX+H
いやぁ、そこは「スクリプトの意味は○○だ!」って
2020/10/16(金) 16:43:40.44ID:JU6AgX+H
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html

It was pointed out that with the rules contained in early drafts, the following 【script】 would print nothing:

BEGIN {
y[1.5] = 1
OFMT = "%e"
print y[1.5]
}

> the following 【script】 would print nothing:
2020/10/16(金) 16:53:32.17ID:JU6AgX+H
>>623
そのレスは何の目的があってしたの?
俺が本当のスクリプトを教えてやるぞってことなら、早く言って欲しい
ただの負け犬の遠吠えなら、そのまま黙ってくれると助かるね
629デフォルトの名無しさん
垢版 |
2020/10/16(金) 16:57:30.29ID:RKtFr9bS
pythonのコードを描いてそれをログインシェルにしても良いんだぜ
2020/10/16(金) 16:58:10.24ID:JU6AgX+H
シェルスクリプトの話しかしてません
ログインシュルの話なんかしてません
2020/10/16(金) 17:01:13.72ID:RRnEM1bt
ほらね
馬鹿がバレただろ?
2020/10/16(金) 17:02:24.56ID:JU6AgX+H
ほらね
馬鹿がバレただろ?

※理由を言わないテクニック(笑)
633デフォルトの名無しさん
垢版 |
2020/10/16(金) 17:32:16.72ID:Wq4ZK+I/
dashはダッシュ
bashならバッシュ
zshはなんと読む?
634デフォルトの名無しさん
垢版 |
2020/10/16(金) 17:35:04.80ID:rggqlWcj
オツシュ
635デフォルトの名無しさん
垢版 |
2020/10/16(金) 19:12:07.11ID:49KTAZqQ
dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash
dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash
dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash
dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash
dash dash dash bash dash dash dash dash dash dash dash dash dash dash dash dash
dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash
dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash dash
636デフォルトの名無しさん
垢版 |
2020/10/16(金) 20:45:17.03ID:QdYgfUXk
ゼットシェル
2020/10/16(金) 21:51:16.80ID:YwASt5fw
zsh規制
638デフォルトの名無しさん
垢版 |
2020/10/17(土) 10:31:07.65ID:0qFIP5N2
ch
sch
tsch
2020/10/17(土) 16:56:16.43ID:1zxs+zPu
foo() { echo $A; }
A=1
A=2 foo
echo $A

ってやった時、1行目に2が表示されると思ってる。
そして2行目には1が表示されると思ってたんだけど
dashだと2と表示される。これってバグ?
2020/10/17(土) 16:59:33.10ID:sPQ7iLy+
普通の挙動じゃない?なにがおかしいと思ってる?
2020/10/17(土) 17:00:23.70ID:1zxs+zPu
>>640
bashやzshでは1が表示される
dashでは2が表示される
ということです。
2020/10/17(土) 17:16:48.26ID:oDONqj5W
bashやzshが仕様通りだと思うけど

https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09_01
If the command name is not a special built-in utility or function, the variable assignments shall be exported for the execution environment of the command and shall not affect the current execution environment except as a side-effect of the expansions performed in step 4
2020/10/17(土) 17:17:04.79ID:1zxs+zPu
そもそも変数に代入しつつコマンド実行って
POSIXで規程されてない?
2020/10/17(土) 17:17:34.52ID:1zxs+zPu
>>642を読む前に書き込んだ。今から見てみる。
2020/10/17(土) 17:22:47.37ID:1zxs+zPu
>>642
これは?

If the command name is a function that is not a standard utility implemented as a function, variable assignments shall affect the current execution environment during the execution of the function. It is unspecified:

Whether or not the variable assignments persist after the completion of the function

Whether or not the variables gain the export attribute during the execution of the function

Whether or not export attributes gained as a result of the variable assignments persist after the completion of the function (if variable assignments persist after the completion of the function)
2020/10/17(土) 17:26:44.95ID:oDONqj5W
>>645
あー、関数だからそっちだね
2020/10/17(土) 17:35:03.05ID:1zxs+zPu
なんでこんなに複雑なんだ・・・
2020/10/18(日) 00:40:25.10ID:ngGOxfYz
>>584
>> もしくはピュアPOSIXの実装とか
>それがdash

とりあえずこれはダウトということ?
2020/10/18(日) 01:14:29.68ID:u/6+iFla
なんで?
2020/10/19(月) 05:17:03.52ID:8QFJcUQW
for music in `cat $OUT`; do
のようなループを書いている
1行ごとに仕事をさせたいのだが
1行の中には空白があり、1行の要素が分断されている
どうすれば分断を防げるだろう?
2020/10/19(月) 09:45:54.95ID:4EZdKnY4
while read
2020/10/19(月) 10:00:20.18ID:8QFJcUQW
thanks
2020/10/25(日) 20:39:06.02ID:/pMQZumA
tputってさどこまでがPOSIX準拠なの?
色はPOSIX準拠じゃないでしょ?
2020/10/26(月) 04:13:51.20ID:tssW3pbf
UNIX系で端末管理はどうやってるのか学べ
2020/10/26(月) 16:46:36.36ID:4vMqqkwn
AWKがシェルスクリプトに含まれるかどうかは
(定義不十分だし)勝手に議論しとけと思うけど,

GNU・BSD拡張を使っていないAWKで何か実装した場合それは
「POSIXに準拠している」と言えるわな。

だから「シェルスクリプトで〜」と言わずに
「POSIXに準拠したやりかたで〜」と言っておけば,
くだらない揚げ足取られずに済んだ訳だ。
時すでにお寿司🍣
2020/10/26(月) 23:22:51.04ID:2CuyKjNX
>>655
あの人は何でもシェルスクリプトでできるって思っちゃってる人だから無理でしょ
POSIXと言いながら、C言語メインとかにはならない

1. シェルスクリプトでやるのがいい (基本)
2. できない? POSIXならC言語とか使ってもOKなんだよ!

POSIXは、シェルスクリプトではなできない事の言い訳として利用してるだけ
だからawkで作ってるのにシェルスクリプトだと言いはる
2020/10/27(火) 07:49:33.18ID:rn8NuyuD
C言語使ってって小さなフィルタープログラムをだろ
既存でないフィルターは自分で作るというある意味シェルスクリプトの本道でもあるだろう
2020/10/27(火) 08:25:50.66ID:u8IX9f6Z
>>657
シェルスクリプトってまさにこの
「C言語で書いた早くて小さいプログラム」
を組み合わせる為の言語だと思ってる。

もちろんシェルスクリプトの制御機構は計算完備なので
シェルとしての機能だけでプログラムを書くこともできるけど,
Unix哲学≠ノ従うならそれはちょっと違うんじゃないかと思う。

シェルスクリプトで完結する人ってUnix哲学をやたら推すし,
Unix哲学自体は今でもある程度参考になるとは思うけど,
ほんとうにUnixらしいやりかたは
「主処理はC言語で書いて組み合わせはシェル」っていうことだと思う。
659デフォルトの名無しさん
垢版 |
2020/10/27(火) 09:36:02.25ID:NxyNpTjA
自分の中でのシェルスクリプトって
新たにプログラムを位置から作るんじゃなくて
既存のコマンドを使って繋ぎ合わせて
間に合わせのプログラムを作るものだと思ってる

自分はプログラミングできるから普通にプログラム書けるけど
コンパイルとかの煩雑な手順を考えると
シェルスクリプトをぱっと書いてすぐ使えるってのはすごい手軽
パイプ処理が肝かなと思ってる
2020/10/27(火) 10:23:30.49ID:nSGvpwuJ
>>658
シェルスクリプトをシェルスクリプトで完結する必要はない。
例えば、C言語で作った何かや「awkで作ったなにか」を呼び出すのもあり
それは当然の話だし、否定していない

言いたいことは、それは「awkで作ったなにか」であって
シェルスクリプトではないということだけ

みとめよう。それはawkプログラミングだ
2020/10/27(火) 10:29:52.20ID:nSGvpwuJ
シェルスクリプトで外部コマンドを呼び出すのはありだし
全ての環境で動かすならPOSIX準拠にしろと思うが
POSIX準拠にこだわる必要もない

例えば、dockerやgitはPOSIX準拠ではないコマンドだ
POSIX至上主義かなにかしらんが、シェルスクリプトから
使っていいのはPOSIX準拠コマンドだけだというのなら
dockerやgitすら使えないということになる

んなばかな(笑)

環境が限定される(つまりdockerやgitが入っていること)という前提で
シェルスクリプトでPOSIX準拠ではないコマンドは普通に使う
つまり何が言いたいかと言うと、シェルスクリプトで読みやすさのために長いオプションを使えという話だ
長いオプションはPOSIX準拠ではないからショートオプションを使え?アホか
どちらにしろPOSIX準拠でないコマンドを使うのだ
2020/10/27(火) 11:22:58.65ID:B6tDM1Ic
>>658
あえてわざわざプログラムをCなりでつくるというのは、Unixらしいとは思わんな。
>>659のいう、既存プログラムを組み合わせることのほうがUnixらしい。

速度や特殊な処理のためにプログラムの開発が必要であればできるしするのは、Unixよりは(Windowsでもするしな)、いかにもハッカーらしいという感じ?
2020/10/27(火) 11:36:52.21ID:nSGvpwuJ
"既存プログラム"を組み合わせるのはUnixらしいが
新しいコマンドを作って組み合わせて使うユニケージはUnixらしくない

しかもそのコマンドが完全に特殊用途向けのコマンドであり
Unixでいうシェルスクリプトにはまったくもって応用できない

今、ユニケージ開発手法にギークが熱狂するワケ【USP研究所代表&オープンソースOSコミッター対談】
【PR】2020.09.25
https://type.jp/et/feature/14070/

はは、クソ開発手法だ。ギークのだーれも熱狂してねーよ
せめてマニアとかオタクとかいえ、ギークと言ったら海外用語だ
海外に進出してないユニケージが熱狂とか嘘作んじゃねーよ
664デフォルトの名無しさん
垢版 |
2020/10/27(火) 12:20:04.79ID:IzIv2i9p
Power-Shell は unix らしさの極みか?
漏れはそうは思わんが
2020/10/27(火) 12:30:26.45ID:eXfPuMud
Power-Shell は反Unixだろ
そもそもWindowsにはまともなコマンドがないから
コマンドの連携ということがしづらい
あっても、正常終了時に「処理が完了しました」とかでて連携ができない
あれはコマンドを連携させずに、ただ並べるだけ

そういう世界だからシェルだけ改良しても意味がない
Unixでいうコマンド相当のものが必要
それが.NET framework。しかし.NET frameworkはAPI
APIだから普段CLIから実行するものではないし
コマンドとして使うのは面倒

Power-Shellはシェルスクリプトとしての特徴と
メリットである簡潔さが失われた「普通の言語」に相当する
2020/10/27(火) 18:52:31.21ID:B6tDM1Ic
>>665
PowerShellを使ったことがないだろ?w
ヘンにハイフンを入れたりしてるしな。

コマンドによってはちゃんとオブジェクトを返すし、パイプで処理することもできる。
.NETを直接実行することもできるし、テキストベースでしかないUnixシェルよりも使いやすいこともある。
「反Unix」というよりは、それを越えたところもあるWindowsらしいシェルと言える。

ただ、いつまでどのようにサポートされるのか、最近はちょっと不安。。。
poshとのかねあいとか。
2020/10/27(火) 18:54:44.28ID:a7WAgl/q
フィルターは、Ruby で作る

Linux のPowerShell は、Azure しか使われていないだろ?
2020/10/27(火) 20:43:43.48ID:gFMGawtc
>>666
> ヘンにハイフンを入れたりしてるしな。
俺に言うな。俺はコピペしただけだ
669デフォルトの名無しさん
垢版 |
2020/10/27(火) 22:01:39.01ID:7WqSRFWS
スペースがあると誤解しているのと、スペースをハイフンに置き換える習慣があるジジイの命名
2020/10/27(火) 22:32:46.87ID:B6tDM1Ic
>>668
で、使ったことはないんやろ?w
であればわざわざPowerShellについて述べずともよい。
2020/10/28(水) 02:15:01.01ID:TQndZTJN
>>670
PowerShellで作ったプログラムをオプソで公開してるがなにか?
2020/10/28(水) 06:49:20.54ID:Df2NTJPb
オプソってなに?
2020/10/28(水) 08:15:00.68ID:zcWN9+mU
Open source
2020/10/28(水) 13:27:15.30ID:l3R5yM/w
>>671
であれば、>>665みたいな理解にはならんがなあ。w
ま、オプソにもいろいろあるからな。
2020/10/28(水) 17:48:34.37ID:QWPlcBUD
これだけマルチコアになった今日び、コマンドの方も対応して欲しい気がする。

ファイル圧縮のコマンドとか、マルチスレッドで処理したら速くできるはず。

あるいはどこまでもマルチプロセス主義でいくというなら... 例えば並列パイプ? というか
今のパイプだとデータフローが一本道だがこれを並列に分散して走らせて最後データを
一本にまとめるような処理の仕組みがあってもいいのではないかと。

ちなみに一本道は「いっぽんみち」で「いっぽんどう」ではないからな、って聞いてないか
676デフォルトの名無しさん
垢版 |
2020/10/28(水) 19:10:42.29ID:Aw3ALjki
例えるならxargs
677デフォルトの名無しさん
垢版 |
2020/10/28(水) 19:52:02.68ID:vhMFXsQD
パイプで繋げば自動でマルチになるではないか
2020/10/28(水) 20:17:48.21ID:FddMFcrq
あまりわかってなさそだな>>675
並列パイプとかも簡単に言ってそう
2020/10/28(水) 20:18:18.79ID:NAroBJuS
最期に一本にまとめるというのならGNU parallelやろ?
バックグラウンドプロセスを使って自分でまとめてもいいが
2020/10/28(水) 20:22:18.78ID:zcWN9+mU
パイプって元々非同期処理(これはPOSIXで規定)だから,
実装によっては普通にマルチスレッドで処理してんじゃないの?
2020/10/28(水) 20:22:22.24ID:58wSuA1P
そもそもUnixにはforkというコマンドがあってだな
2020/10/28(水) 20:23:15.77ID:XBU5yUok
ターミナルを2枚開いてマルチプロセス!
2020/10/28(水) 20:32:27.18ID:NAroBJuS
多くの言語が並列処理を行うように明示的に書かなければ並列処理されないのに比べて
シェルスクリプトは普通に書いてもかってに並列処理が行われる言語の1つ
2020/10/28(水) 21:19:48.83ID:zcWN9+mU
>>683
そうそう。
だから >>675 の主張がよくわからんのよね。
もしかしてパイプが非同期処理ってことを
知らなかったのかもしれない。
2020/10/28(水) 21:48:39.39ID:K6dD4VVC
>>683,684
お前らもプロセスとスレッドの違いがわかってないようだがな
2020/10/28(水) 22:22:18.44ID:1fF6N90I
>>685
わかってるが、何を根拠にいちゃもんつけたの?w
2020/10/28(水) 22:37:57.46ID:K6dD4VVC
お前はどっちなの?
まだ ID:NAroBJuS ならそうわかってはないようでもあるが、ID:zcWN9+mU は明らかにわかってないなw
2020/10/28(水) 22:42:56.15ID:1fF6N90I
質問を質問で返すな
まずお前が根拠をいえ
言わないで質問する理由なんかないだろ
2020/10/28(水) 22:43:30.54ID:l3R5yM/w
まあ、>>680の「マルチスレッド」はおかしいな。
言うなら「マルチタスク」とかやろ。
2020/10/28(水) 22:45:28.30ID:K6dD4VVC
どっちなのかも言えないのか。後者だろなな
2020/10/28(水) 22:47:04.72ID:1fF6N90I
前者だが?はい、言いましたーw
次はお前の番だが、ここまでやっておいて
お前は答えられないってことはないよな
2020/10/28(水) 22:54:11.38ID:K6dD4VVC
そりゃすまんかったな。>>687と書いてるのに、なおおきに召さずに>>688なんて返すとは思わなかったわ

他の言語はあくまでも一つのプロセス内で行うことを記述するのが目的。プロセス内でのルーチンを呼ぶとか
シェルスクリプトは、最初からプロセスを起動する記述するのが目的。(マルチタスクだから複数同時起動して、パイプで繋げて「同期」って簡単に実現できるだけ)

明らかに全然違うし、「多くの言語が並列処理を行うように明示的に書かなければ並列処理されない」なんてわざわざ書くのはあんまわかってなさそうだなってとこ
2020/10/28(水) 22:56:23.42ID:1fF6N90I
>>692
誰が同じことを繰り返し言えって言った?

> 「多くの言語が並列処理を行うように明示的に書かなければ並列処理されない」なんてわざわざ書くのはあんまわかってなさそうだなってとこ
の理由を書けといったんだが?
2020/10/28(水) 22:57:50.86ID:K6dD4VVC
書いたぞ。読まないのは知らないぞ
2020/10/28(水) 22:59:25.60ID:1fF6N90I
書いたというのなら、引用できるはずだなw
新しい言葉を追加せずに、理由を引用してみろ
2020/10/28(水) 23:01:45.79ID:K6dD4VVC
読む気なさそうだからなあw
すでに書いた後は知らない
2020/10/28(水) 23:03:01.34ID:X2c0ql0Z
な?引用できなかった。
2020/10/29(木) 08:36:16.60ID:D7f8M1As
「こいつ分かってない」って言葉ってほんとうに便利よね。
それだけで
・自分が分かっている人間≠セと暗示できる
(でもあくまで暗示だから言質を取られる恐れもないw)
・相手より上の立場に立つ(という錯覚が)できる
わけだからさ。
2020/10/29(木) 08:43:02.83ID:D7f8M1As
ていうかシェルスクリプトで簡単にできるのは「マルチタスク」であって,
マルチタスクというのは非同期的な処理だから「非同期処理が簡単にできる」
という言説は正しいと言えるのかも知れないが(それでも違和感がある),
普通「マルチスレッド」といったときの同一プロセス内での複数スレッド処理に関しては
そもそもCPUの機能を全部抽象化されてるようなシェルスクリプトでは
外部コマンドを使ったりしないと実現できんのでは。

もしかしたら俺が知らんだけで
POSIXかどっかで「この動作はマルチ*スレッド*で処理されますよ」
というのが規定されている可能性もあるが,
ちょっと考えにくい。
700デフォルトの名無しさん
垢版 |
2020/10/29(木) 10:29:24.34ID:YCEy/zhh
シェルの内部コマンドでマルチスレッド化したほうが効率的なら勝手にやりゃいいんじゃねーの?
具体的にどのコマンドを対応させたいの?
もう誰か作ってんじゃないの?
2020/10/29(木) 10:45:18.65ID:XkZMBg2d
>同一プロセス内での複数スレッド処理に関しては
>そもそもCPUの機能を全部抽象化されてるようなシェルスクリプトでは
>外部コマンドを使ったりしないと実現できんのでは
何を言いたいのかイミフ
複数のスレッドで作業を分割して同時並行で実行するが、終了は順番に受け取るとかめんどくさいだとかで普通にできるだろう。単にやる必要もないってとこだな

>POSIXかどっかで「この動作はマルチ*スレッド*で処理されますよ」
>というのが規定されている可能性もあるが,
>ちょっと考えにくい。
なんか純粋なUnix系のOSを理解してないっぽい。純粋部分はマルチスレッドはOSで「勝手に」はやらんだろう。CUIレベルだと必要なさげだからな。GUIなOSでは勝手にはあるけど
702デフォルトの名無しさん
垢版 |
2020/10/29(木) 10:55:31.90ID:yfEeCvlS
シェルスクリプトはHaskellと同じで自動的にマルチスレッド化するプログラミング
言語ですよ!
素晴らしいですよ!

ってこと?
2020/10/29(木) 10:57:33.10ID:XkZMBg2d
>>700
イミフな部分は シェルの内部コマンド をマルチスレッドでという話か
内部コマンドっても単にコマンドを内包してるだけで、外部コマンドと変わらない(いや、変わらないと困る)もんだろと思ってるから、そういう読みはできなかった。なるほどね

ksh,zsh でも確かマルチスレッドではなかったような
i=0
command | while read j; do
i=$((i+j))
done
って、i がちゃんと変わるようにしてるのに(確かネストしても大丈夫だったような)。実現方法はなんだっけ
2020/10/29(木) 10:59:39.85ID:XkZMBg2d
>>702
しないよw
多分全く
705デフォルトの名無しさん
垢版 |
2020/10/29(木) 11:25:48.02ID:yfEeCvlS
でも、自動的にマルチスレッド化してC言語の64倍高速化する可能性も、ワンチャンあるって事ですよね?

試してみるバリューあるのでは?
2020/10/29(木) 11:31:36.93ID:XkZMBg2d
ないよw
C言語でもOpenMP使えば割と見た目簡単にできそうだが、OpenMPもそれほど流行ってない
プロセス=特に何か意識する必要もない
スレッド=常時何かを意識する必要がある
そう簡単な話ではない
Haskellとかはマルチスレッドでなきゃそもそも実現できない言語なのだからそれと比べても意味はないな。Haskell出したのはそう意味あるわけではないだろけど
2020/10/29(木) 11:38:39.55ID:XkZMBg2d
>そもそも実現できない言語なのだから
というわけでもないのね
出し受けがどでかいばかりじゃないからそりゃそうか
708デフォルトの名無しさん
垢版 |
2020/10/29(木) 11:49:45.20ID:yfEeCvlS
シェルスクリプトがマルチ高速化のアビリティを持つのは否定しようがないファクトですよね?
2020/10/29(木) 11:59:44.96ID:XkZMBg2d
小池とかのギャグに走ってるだけだろ
2020/10/29(木) 15:03:10.28ID:8VEYobTG
>>708
マルチ高速化?
アビリティ?
ファクト?

個々の言葉はそれほどでもないが、にもかかわらず、全体から漂うバカっぽさ。w
2020/10/29(木) 15:45:57.37ID:i0HZBLVS
自己紹介がお上手
2020/10/29(木) 22:21:37.37ID:87BKVwTm
並行・並列とプロセス・OSスレッド・軽量スレッドと同期・非同期の切り分けがごっちゃになってそう知らんけど
713デフォルトの名無しさん
垢版 |
2020/10/29(木) 22:49:07.55ID:yfEeCvlS
バリューないですか?
2020/10/29(木) 22:51:15.28ID:Ju4cpcAY
並行と並列はいまだにうまく使い分けられていない印象
正確な定義はどこかにあるんだろうが、人によって使われ方が違う
715デフォルトの名無しさん
垢版 |
2020/10/29(木) 22:55:56.32ID:yfEeCvlS
コンカレントとパラレルの違いはアジア人にはわかり辛いですからね。

キリスト教的考え方が普及していないからですね。
2020/10/29(木) 23:59:18.90ID:N/u/fZ2Q
並行と並列は使ってるCPUで決まる。
プログラムの書き方に違いはない。
717デフォルトの名無しさん
垢版 |
2020/10/30(金) 17:02:49.47ID:ig1/qwB5
$@みたいな擬配列変数に格納されている値 一つ一つに対して
何か処理を行なう時に,別の変数を用意しない(使わない)方法って原理的に可能かな。

普通は
for args in $@; do
なにか処理
done
というスクリプトを組むと思うんだけど,
argsみたいな変数を使わずに済む方法があれば知りたい。
(シェルスクリプトは基本的には変数の無駄遣いを避けなきゃいけないので。
まあそれが「欠陥」かどうかは別として)
2020/10/30(金) 17:39:03.81ID:mooUMZ8S
なう
2020/10/30(金) 18:20:41.07ID:vW0P/VrR
PowerShellってKshとかPerlとかUnixのシェルやスクリプト言語を研究してベースにして作ったって、昔QuoraかどこかでMSの社員が答えてた
begin/endブロックとか、昔からUnix使ってればそのまま活かせる知識かなりある
2020/10/30(金) 18:25:55.93ID:sXVsY8+M
>>717
$@を書き換えるのでないなら

while [ $# -gt 0 ]; do
 なにか処理 "$1"
 shift
done
2020/10/30(金) 18:26:25.00ID:sXVsY8+M
他にも再起でできる
722717
垢版 |
2020/10/30(金) 18:27:46.70ID:ig1/qwB5
>>720
shiftを使うのか,頭になかったw
ありがとう!
2020/10/30(金) 18:30:51.05ID:sXVsY8+M
> (シェルスクリプトは基本的には変数の無駄遣いを避けなきゃいけないので。
これはなんで? 変数名がぶつかるとかいう話?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況