X



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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2020/11/24(火) 21:37:20.06ID:mbTiTj6s
シェルスクリプトに関する総合スレッドです。

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

前スレ: シェルスクリプト総合 その34
https://mevius.5ch.net/test/read.cgi/tech/1597990675/
0584デフォルトの名無しさん
垢版 |
2020/12/27(日) 20:41:56.75ID:OKKHmb6b
普通に斜線シンドロームとか斜線病で良くね
syndromeは症候群て訳されるけど症候群は違う感じする
0585デフォルトの名無しさん
垢版 |
2020/12/27(日) 21:04:38.86ID:RkRq3Z+d
ダブルミーニングな気がするが傾きと偏愛の2つの意味がある
https://eow.alc.co.jp/search?q=leaning
> 〔垂直な位置からの〕傾き、傾斜◆【動】lean
> 〔〜を好む〕傾向

https://ejje.weblio.jp/content/leaning
> 傾向,性癖; 好み,偏愛 〔to,toward〕.

だが公式につまようじ大好き症候群って書いてるんだから
こっちでいいやろ。斜めつまようじとか意味わからんし。
0587デフォルトの名無しさん
垢版 |
2020/12/27(日) 21:58:06.67ID:RkRq3Z+d
>>586
「star」には「星」という意味と「人気者」という意味がある

「star]を訳出してるだけ、スターウオーズは「人気者戦争」だ
と言われても、訳がおかしい、意味わからんとしか言いようがないのと一緒
0590デフォルトの名無しさん
垢版 |
2020/12/27(日) 23:25:45.11ID:vxCvKtMx
>>584
m/ftp:\/\/[^\/]*\/pub\//
をぱっとみ \ を含めて leaning toothpick が多すぎ=単に見た目な感じだけでじゃね
そんな厳密な病気的な意味でなく、なんらかの変わったように見える(もしくは少々異常に見える)状態行動を言うときもあるだろう
「病」と言う場合もあるがどちらかというと揶揄したり真っ向から否定する場合じゃね
0591デフォルトの名無しさん
垢版 |
2020/12/27(日) 23:40:37.60ID:vxCvKtMx
難読化を促進してるのは主に \ のせいだし、
/ と \ しかとりあえずその言葉の対象(原因?)でしかないので、斜めつまようじシンドローム の方が合ってるような気がするな。日本語の語感としては変だと思うけどw
0597デフォルトの名無しさん
垢版 |
2020/12/28(月) 08:17:31.57ID:Ek6iOK1a
>>590
そういうときのために
m(ftp%3A//[^/]*/pub/)
って書けるように
処理系のほうが工夫してるんだったら
書かない方が悪い
0601デフォルトの名無しさん
垢版 |
2020/12/31(木) 17:15:57.75ID:6l44qxZH
#!/bin/sh

aiuo() {
curl --silent "https://example"; | jq -r ".aaa.bbb" 2> /dev/null
}

hoge=""
hoge=${aiuo}
echo "hoge = ${hoge}"

ターミナルでaiuoの中を一行でやるとjqの結果が表示されるけど、
shファイルを作ってやるとjqの結果が表示されずにhoge =しか表示されないのはどこが間違えてますか?
0604デフォルトの名無しさん
垢版 |
2020/12/31(木) 19:11:51.62ID:+40/WJTs
awkがシェルスクリプトじゃないのは事実なんだよな

POSIX原理主義はシェルスクリプト以外も使っていいと言いつつ
結局「シェルスクリプトでやる」と主張してるだろっていうツッコミはあるが

シェルスクリプト以外も使っていいからこそ
awkという「シェルスクリプトではない言語」を使っているんだろ?w

だから最初に言った言葉である「awkはシェルスクリプトではない」という事実は変わってない
awkメインのコー ドは「シェルスクリプト」ではなく「awkスクリプト」と呼ぶべきで
POSIX原理主義は「(原則として)シェルスクリプトで実装する」と主張するんじゃなくて
「awkを使って実装する」と主張するべきだってことなんだよ

ちなみにな、POSIX原理主義はシェルスクリプト以外も使っていいのであれば
RubyやJavaなども使っていいということになる
こちらも「シェルスクリプト以外も使っていいが原則としてシェルスクリプトでやる」という主張と矛盾している
0605デフォルトの名無しさん
垢版 |
2020/12/31(木) 19:14:03.59ID:+40/WJTs
少し訂正

× awkメインのコー ドは「シェルスクリプト」ではなく「awkスクリプト」と呼ぶべきで
○ 埋め込みawkメインのコー ドは「シェルスクリプト」ではなく「awkスクリプト」と呼ぶべきで

Pythonのコー ドをワンライナーでシェルスクリプトに埋め込むのと同じ
ワンライナー程度ならまだシェルスクリプトがメインと言えるだろうが
何十行も全体の半分以上も埋め込むなやw
0606デフォルトの名無しさん
垢版 |
2020/12/31(木) 20:11:12.41ID:jey11SVr
>>601
hoge=$(aiuo)かhoge=`aiuo`にすれば?
0608デフォルトの名無しさん
垢版 |
2020/12/31(木) 20:57:23.81ID:2bA0HVQw
( hoge; hage ) コマンドのグループ化(サブシェル内でコマンド実行)
{ hoge; hage; } コマンドのグループ化(サブシェルなしでコマンド実行)

ret=$( hoge; hage ) 標準出力の結果を変数に入れる(サブシェル内でコマンド実行)
ret=`hoge; hage` 上記と同等。POSIXに準拠してない古いシェル用の書き方。ネストできないので30年前から非推奨。
ret=${ hoge; hage; } こんなものはない
0610デフォルトの名無しさん
垢版 |
2021/01/01(金) 00:39:28.26ID:wSR0l3d3
>>608
`<command>`ってネストできないんだっけ。
ネストしにくいだけで可能ではあるんじゃなかったか。
0611デフォルトの名無しさん
垢版 |
2021/01/01(金) 00:47:58.70ID:hjo1vK/7
もうどうでもいいよw
``は30年前から非推奨
四則演算にexprを使うのも30年前から非推奨
$(...) と $((...)) を使うのが30年前から続くPOSIX準拠のトレンド
これを普及させることが今年の目標なw
0612デフォルトの名無しさん
垢版 |
2021/01/01(金) 01:28:03.16ID:7BFOsP2G
>>610
シングルクウォートでできないっけ
0613デフォルトの名無しさん
垢版 |
2021/01/01(金) 01:52:19.59ID:2/H3yQW9
>>612
バックスラッシュかな。バックスラッシュでできるよう
`level1\`level2\\\`level3\\\\\\\`level4\\\\\\\`\\\`\\\`level3\\\`\``
のような
なんか笑うw
0614デフォルトの名無しさん
垢版 |
2021/01/01(金) 01:57:51.57ID:7BFOsP2G
>>613
これは分かりにくいな…
0615デフォルトの名無しさん
垢版 |
2021/01/01(金) 02:15:20.98ID:2/H3yQW9
\ はどういう増加率やねんと思った(level4は一つずつ増やしての手動)ら、2^(level-1)-1
だった
まあ、そんなにネストするやつは居ないだろうで実質level3ぐらいが実用的な範囲か
(もしくはそんなにネストすんなという暗黙的戒めか?w)
でも、遊びでlevel6とかするとやっぱり笑うw

>>614
うん。でも、見方変えるとなんかでかいからペアがわかりやすく...もねえかw
0617デフォルトの名無しさん
垢版 |
2021/01/01(金) 03:00:52.40ID:hjo1vK/7
さすがにPOSIXを厳守してるので``つかいます。expr使います。
とか言ってるエセPOSIX信者は消えたかね?

あと`#`とかいうハックするやつは○ね
サブシェル起動で遅くなるだろが
0618デフォルトの名無しさん
垢版 |
2021/01/01(金) 03:08:12.13ID:2/H3yQW9
いつものやつとしか思えないw
自分が間違ったのを異常に誤魔化すような(いつものw)異常なレスだなと見えるぞ
0625デフォルトの名無しさん
垢版 |
2021/01/04(月) 12:53:18.02ID:gQq4oDMw
aaa="testtt" #フォルダ名
date_dir=$(mkdir -p $aaa/`date '+%Y%m%d'`) #testttフォルダの中に20210104の作りたい

wget https://example.com/example.txt -P $date_dir

これをやるとフォルダは作られるけどtxtの保存先がカレントディレクトリになるのはどうしてですか?
0626デフォルトの名無しさん
垢版 |
2021/01/04(月) 13:13:55.07ID:VbZo6FxW
>>625
“$date_dir”の中身を確認してみ

原因を知ることも大事だけど
それを調べる方法を知ることのほうがもっと大事
0628デフォルトの名無しさん
垢版 |
2021/01/04(月) 15:43:15.17ID:UbvRjqjo
mkdir -p $aaa/`date '+%Y%m%d'`の標準出力見てごらん
0629デフォルトの名無しさん
垢版 |
2021/01/04(月) 17:34:40.13ID:yec7Hk1C
mkdir が、戻り値を返すか?

An exit status of zero indicates success,
and a nonzero value indicates failure.

echo $?
だろ
0635デフォルトの名無しさん
垢版 |
2021/01/05(火) 12:08:48.70ID:zD1ciQHW
Ruby では、あるディレクトリ直下のディレクトリだけをソートして、
", "(カンマと空白)でつなげて、1行の文字列にしたものは、

ruby -e 'puts Dir.glob( "*" ).select{ |file| File.directory? file }.sort.join( ", " )'

出力
app, bin, config, db

これをシェルスクリプトでは、どう作るの?
これらを使うの?

ls -d */
find . -maxdepth 1 -type d
0636デフォルトの名無しさん
垢版 |
2021/01/05(火) 15:59:04.73ID:2z9IJIZ8
スレのテンプレにRubyの話を控える(というかほぼ無くす)よう追記しない?
0637デフォルトの名無しさん
垢版 |
2021/01/05(火) 16:54:38.25ID:G+6noEPp
>>636
またマウントとれない話題はやめろってか

ダサいなぁ
答えられないならスルーすればいいだけだろ
0639デフォルトの名無しさん
垢版 |
2021/01/05(火) 17:48:43.98ID:psakH13p
半分シェルスクリプトの質問なんだからスレチでもなくない?
ワイはだるいから答えませんが...
0640デフォルトの名無しさん
垢版 |
2021/01/05(火) 17:55:47.46ID:DKe92MJE
>>635
ruby -e 'puts Dir.glob( "*" ).select{ |file| File.directory? file }.sort.join( ", " )'

find * -maxdepth 0 -type d -printf "%f, " | sed 's/, $/\n/'

27文字差
0642デフォルトの名無しさん
垢版 |
2021/01/05(火) 18:07:31.79ID:aNkjNIb3
シェルスクリプトが苦手な人が
難しくなったら他言語で書き直したほうがいいってよく言ってるけど
同じ処理を他言語で書き直すとたいていシェルスクリプトより長くなるんだよなw
0643デフォルトの名無しさん
垢版 |
2021/01/05(火) 18:45:22.40ID:PtcuBhf4
場合によるだろう
いつもの隙あればマウント取りたがりかw1行目から明らかに
>>633は誰かが遊んだのかと思ったら自らなのか。キチってるなw
0646デフォルトの名無しさん
垢版 |
2021/01/05(火) 19:09:44.19ID:PtcuBhf4
ルビキチはしばらく見ないなw
ルビキチに悪影響されての ID:2z9IJIZ8 の流れがちょっとアレだったな
0651デフォルトの名無しさん
垢版 |
2021/01/06(水) 12:16:54.19ID:mYe0Yhh2
>>650
こんなオプションあったんだな
0655デフォルトの名無しさん
垢版 |
2021/01/06(水) 20:47:11.09ID:HZIFnr+X
つーか俺は誰かと違ってPOSIXじゃないからだめなんて言ってないんだけどな

POSIXシェルではどうやればいいかって話をしてるだけで、ウェブアプリとか
シェルスクリプトには向かない作業にRubyやPythonなどの他の言語を使うのは当たり前
もちろんawkも使って構わないが、ただしそれはawk言語であってシェルスクリプトではないとは言うけどなw

何十年も動かしたいプログラムに、何十年も変化しない言語を使うのはまだ理解できるが
そもそも何十年も動かしたいという顧客の要求がなく、むしろ新しい機能の追加や修正を
行い続けるようなものに開発しづらいシェルスクリプトを使うのは馬鹿げてる
0656デフォルトの名無しさん
垢版 |
2021/01/06(水) 21:16:29.90ID:D/BvDb1X
っていうか,
「PythonやRubyはPOSIX Cで作られてるからPOSIX!」
っていう理論,いや1億歩譲ってそれを認めたとして,
このスレのタイトルを1億回読み直してほしいw

つまり結局,このスレで「POSIXが〜」と限定した場合に言及すべき範囲は
POSIXが(唯一)定めているShell Command Languageおよび(Shell) Utilitiyなんだよな。
0657デフォルトの名無しさん
垢版 |
2021/01/06(水) 22:10:20.61ID:hZlCYb+O
> 「PythonやRubyはPOSIX Cで作られてるからPOSIX!」

そんな主張してないぞ

POSIX原理主義がPOSIXシェルスクリプトをメインに開発する!
→でも○○無理じゃん
→シェルスクリプトで書くのは必須じゃない。交換可能可能性があれば使ってもOK!
→(交換可能可能性とか後付作っただろ・・・)
その理屈だと、C言語は交換可能性があるからOKだとして、
C言語で誰かがが作った(例えばユニケージの)独自コマンドは交換可能性がないからNGですよね?
そしてPythonやRubyもJythonやJRubyといった交換可能性があるからPOSIXじゃなくてもOKですね

こういう話ね
0659デフォルトの名無しさん
垢版 |
2021/01/11(月) 01:02:14.08ID:Nxf8SjHi
それで標準ライブラリは極力使わないって話にどうしてなるのか
意味不明なのは変わらないな
0661デフォルトの名無しさん
垢版 |
2021/01/11(月) 12:59:18.59ID:MB0taG6M
どんな環境でも動くものを作れるここの先輩方は
LinuxだけでなくMacも込で動くように作られますか?
0662デフォルトの名無しさん
垢版 |
2021/01/11(月) 14:08:49.23ID:4YPmzemp
LinuxでもMacでも動かしたくなるようなもので
普通に作れるようなものであれば作ってるよ

普通に作れないものっていうのは
例えば、systemdを使うものとかファイアウォール設定を変えるとか
Linuxの環境じゃないと意味がないようなもののことね
0663デフォルトの名無しさん
垢版 |
2021/01/11(月) 20:09:51.00ID:1GKY+oky
>>661
ポジキチではないけど,
MacはUNIX v7に準拠してるし,
Linuxは正式に準拠してはいないけどほぼPOSIXに従ってるから,
POSIXの範囲でシェルスクリプトを書いておけば
MacでもLinuxでも動く。

まあそれに「意味があるのか」というのは別の話。
(Goプログラマが「Goで書けどこでも動く!」とか言ってるのと
似たようなもん)
0664デフォルトの名無しさん
垢版 |
2021/01/11(月) 20:36:44.96ID:3OvUQiSB
ここに書き込む人は大概Linux前提でGNUのツールが前提になってるから
MacにもGNUのツールをどんどん入れれば大丈夫と言う考え方はある
逆に言えばGNU原理主義なのかもしれんがw
0666デフォルトの名無しさん
垢版 |
2021/01/11(月) 20:39:06.55ID:k6EkwuyV
>>664
それはそうなんだけど、Macの場合、結局、フリーソフト使って実現なんだよね
ああ、GNUがフリーソフトだろっていう話じゃなくて
macOSが公式に対応してるわけじゃないって意味ね。
macOSが公式に対応してないからOSのアップデートで動かなかったりする
0668デフォルトの名無しさん
垢版 |
2021/01/11(月) 22:14:22.97ID:TgqHKx3G
>>664
macosってコードベース的には90%くらいfreebsdのはずだが、gnuは徹底排除抹殺思想のfreebsdとしてどんな気持ちなんだろ…
もちろんライセンス的にクリアしてるんだろうが

まあmacは持ってないんだが(シェル含め)スクリプト写経用に人からコピーさせてもらった、まんじゃろ、とか言ってた頃?
blobじゃないファイルのコメントにfreebsd記載率9割
0669デフォルトの名無しさん
垢版 |
2021/01/11(月) 22:19:33.52ID:TgqHKx3G
というかbsd使いは規格とか気にしてない人が多そう(尖った人という偏見)
そもそもコミュニティが小さいので気にするまでもないってのもある
規格を異様に気にするのは、環境が千差万別なlinuxユーザでしょ
0670デフォルトの名無しさん
垢版 |
2021/01/12(火) 02:54:46.84ID:hnOFIrYF
>macosってコードベース的には90%くらいfreebsdのはず
>まあmacは持ってないんだが
他も無知ゆえの妄想ばかりだな
mac持ってなくても調べればわかるのを調べもしないでのでタチが悪い無知
0671デフォルトの名無しさん
垢版 |
2021/01/12(火) 03:08:52.49ID:TSfQlcFo
usrとかbinとかgrep(と-v)してみりゃそうだって分かるだろ、バイナリ部分は公開してない以上分からんとしか言えん
0672デフォルトの名無しさん
垢版 |
2021/01/12(火) 03:23:26.83ID:hnOFIrYF
「コードベース」とか範囲が広すぎだろう。バイナリ部分ってなんやねん
単にコマンド(大体はPOSIXにあるコマンド)って話なのか?
0674デフォルトの名無しさん
垢版 |
2021/01/12(火) 05:28:57.54ID:hnOFIrYF
お前の独特の言語言葉なんて知らんわ
usr bin にあるバイナリを調べろと言ってるのか。ちょっとは自分で調べてあんなこと言ってるのかと思ったら、全くなのな
てことは単にコマンドのことを言ってるだけか。コードベースwとか独特の言葉を使うなよ

それなりにオープンソースで公開されてるんだから少しは調べようとしろよ、語るwなら
妄想で語るだけのに さすが信者 とか言われたくないわw
0675デフォルトの名無しさん
垢版 |
2021/01/12(火) 06:11:57.28ID:eUCbLjlC
勝手に
les, bus - ATM LAN Emulation service demons
というのが入っているけど、何これ
0677デフォルトの名無しさん
垢版 |
2021/01/14(木) 09:56:27.47ID:s2FPIYdL
なんか面白いテクニックが某所で紹介されてるな

#!/usr/bin/echo This script is supposed to be sourced like this: .

まあ、macだと/bin/echoだったりするわけだが
0678デフォルトの名無しさん
垢版 |
2021/01/14(木) 12:42:21.34ID:tanA3fVT
a="A" b="B" みたいな文字列を渡したら
a変数にA、b変数のBみたいに代入する方法ないかな?
ただし脆弱性が怖いんで、 a="$(cmd)" みたいなものは
そのままa変数に$(cmd)という文字列が入る

そしてスペースとかダブルクォート入れたかったら
a='A " A' とか a="A \" A" とかできるようにしたい
■ このスレッドは過去ログ倉庫に格納されています

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