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

■ このスレッドは過去ログ倉庫に格納されています
2021/02/25(木) 09:20:14.64ID:ZyJLXTlk
シェルスクリプトに関する総合スレッドです。

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

前スレ: シェルスクリプト総合 その35
https://mevius.5ch.net/test/read.cgi/tech/1606221440/

関連スレ
・【Bash】Windows Subsystem for Linux【WSL】9
https://mao.5ch.net/test/read.cgi/linux/1607589861/
・Bashでプログラミング [転載禁止](c)2ch.net
https://mao.5ch.net/test/read.cgi/linux/1443885102/
・シェルスクリプト総合 その28
https://mevius.5ch.net/test/read.cgi/unix/1533154936/
・zsh その7
https://mevius.5ch.net/test/read.cgi/unix/1337844883/
・過去UNIXで使われていた ksh というシェルについて
https://mevius.5ch.net/test/read.cgi/unix/1582358403/
・【POSIX】UNIXプログラミング【BSD】 [転載禁止](c)2ch.net
https://mevius.5ch.net/test/read.cgi/unix/1443103705/
・おまえら! shell は何を使っているんですか?
https://mevius.5ch.net/test/read.cgi/unix/1012330865/
2021/06/26(土) 06:02:48.49ID:m56tn/Vu
>>733
# PowerShell
Get-Content "test.csv" | ForEach-Object { $1列目, $2列目, $3列目 = $_.Split(",") ; "$1列目" -replace "$", "," }

PS> gal
# Aliasを使うとこうなる
type "test.csv" | % { $1列目, $2列目, $3列目 = $_.Split(",") ; "$1列目" -replace "$", "," }
2021/06/26(土) 13:09:52.71ID:pd6KxWqx
>>747
UNIX & Linux コマンド・シェルスクリプト リファレンス
https://shellscript.sunone.me/
このサイトはどうだ?
リファレンス名乗ってるけど、シェルスクリプトの基本から
解説してるぞ。
2021/06/26(土) 15:02:58.18ID:HkMm3Nsz
書き方間違えた。。
シェルスクリプト学べる講座みたいな意味です。超初心者向けはあるけど、本格的に教えてくれるのないよね?
2021/06/26(土) 15:12:45.40ID:pd6KxWqx
>>750
本格的、ってどういうもの?
シェル芸みたいなものってことか?
ま、それは確かにないだろうなあ。
ほとんどが秘伝というか口伝みたいなものだから、講座作れるほど網羅している
人ってのがなかなかいないしなあw
752デフォルトの名無しさん
垢版 |
2021/06/26(土) 15:20:25.76ID:15vAhO8I
python使えたらシェルスクリプト要らんのでは
2021/06/26(土) 15:26:57.82ID:pd6KxWqx
>>752
ま、なにするかによるけど、例えばファイルをリネームしたりコピーしたり、
ディレクトリ捜査/操作したりするようなのなら、pythonとかで書くのは
かなーりめんどくさいよ?w
2021/06/26(土) 16:20:33.94ID:fSNbZd7z
man bash > $HOME/Documents/bash.txt
vi $HOME/Documents/bash.txt
SHELL BUILTIN COMMANDSを検索

man dash > $HOME/Documents/bash.txt
vi $HOME/Documents/bash.txt
Builtinsを検索
2021/06/26(土) 16:46:27.14ID:fSNbZd7z
man bash-builtins
/検索語句
Nキー:次
Bキー:前
Qキー:終了
2021/06/26(土) 16:58:17.32ID:Y3/GrXsT
>>752
インストールされてない/したくない環境もあるやろ。
2021/06/26(土) 19:39:26.99ID:6sjjJ5as
本なら、ある。
UNIXシェルスクリプトコマンドブック 第3版、 山下哲典、2015

ファイル・文字列処理なら、Ruby が良い

fileutils モジュールの、DryRun で、実際には実行せずに確認できる。
削除なら、FileUtils::DryRun.rm
2021/06/26(土) 20:08:24.78ID:eKFjOqkk
>>755
何のためのレスかわからんけど、h 押してみ
2021/06/26(土) 23:12:46.20ID:Y3/GrXsT
>>758
初心者は、manやinfoの扱いに困ることはありがち。
infoは、ワイも未だに困ることがあるで。💦
2021/06/27(日) 03:00:03.59ID:JLxNdtth
h 押すだけで使い方を覚えなくてすむから良いね
2021/06/27(日) 10:23:28.81ID:kOTo8S0v
bashの予約語
! case coproc do done elif else esac fi for function if in select then until while { } time [[ ]]
その中からdashにはない予約語
! [[ ]] coproc function in select time
2021/06/27(日) 13:34:55.40ID:eeXftvTT
>>761
(( ))とかもdashにはないだろう。
…つかなんのためにやってんの?これ?w
763デフォルトの名無しさん
垢版 |
2021/06/28(月) 09:24:33.50ID:7rguVsVy
>>747
名著「入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界」
2021/06/28(月) 15:58:41.95ID:PrwZxveA
functionはdashにはないので関数定義で
function 関数名 () { }
と書けない。関数をつくるときはfunctionを省く。
2021/07/04(日) 23:04:42.22ID:B2MxyBfM
Windows10ではC:\Windows\Microsoft.NET\Framework\<バージョン>以下にvbc.exeが標準インストールされてるけど
Windows11のInsider Preview版でも入ってる?
2021/07/07(水) 15:15:00.04ID:y8n+ZYbw
シェルスクリプトの引数として文字列を渡すとき、空白等を含むものはダブルクォーテーションで包んで渡してます
このダブルクォーテーションを省略できたら楽なのですが、行末 (セミコロン) まで丸々一つの文字列と見なす方法ありますか
2021/07/07(水) 17:53:02.55ID:S2V3/enC
上手く引数をクオートしてやればいいんじゃね、bashには最初からそんなシェル関数が定義されてるので、参考に
declare -p等の出力ね
ただしパースが不可逆な処理である以上、完全な再構築は不可能
自明な例:cmd 'a'とcmd a

行内コメントとヒストリ、スクリプト中のエイリアス展開等を使っていいならもっと攻められる
aliasは全ての展開に優先するので何でもできる
func () { history 1 | 引数処理}
alias getcmdline='func #'
getcmdline ) any' illegal " args

スクリプト中なら
set -o history
shopt -s expand_alias
が必要
2021/07/07(水) 17:59:42.48ID:S2V3/enC
pwshにはズバリstop persing operator --%があるね
2021/07/07(水) 18:50:47.92ID:S2V3/enC
;で止めるのはexprやパラメータ置換で;以降を切り出しておいて、ラップするコマンドの処理が済んだ後でeval に渡せばいいかな
&等他の制御構造も使いたいとなるとキリがないけど
下手に通常コマンドのように見せかけるのは混乱の元にもなるので、割り切った方がいい
2021/07/07(水) 19:10:07.39ID:2/exV/Wq
たかが''で括る手間を省く為に、あまりアナーキーなことをするのは…
2021/07/07(水) 19:41:57.72ID:JjiOZstZ
だよな
2021/07/07(水) 21:59:30.78ID:rfVJ+RI1
これ動くんだ…
2021/07/07(水) 22:09:19.52ID:lJn1zakl
インラインコメントのつもりで付けた#以降が読まれる可能性があるけど、普通スクリプト中のエイリアスは無効だから大丈夫なのね
774デフォルトの名無しさん
垢版 |
2021/07/10(土) 17:17:24.24ID:QtAhxdi9
w3mブラウザを使っています。
w3mを起動した後の自動処理ってシェルでどのように書けばいいでしょうか??

毎回タブを作ってURL01とURL02を開くなどをやりたいのですが
bashrcにaliasやfunctionを書くことも考えましたが、w3m起動後の処理はできないので困っております。
2021/07/10(土) 22:08:01.96ID:icE46eu/
例えば、Ruby, Selenium Webdriver で、
Chrome なら操作できるけど、そういうマイナーなブラウザには対応していないかも

Rubyの他に、JavaScript でも書ける。
Selenium IDE と言うのもあるらしい

url_0 = "どこかのURL"
url_1 = "どこかのURL"

driver.navigate.to url_0 # url_0 のタブを開く

driver.execute_script( "window.open()" ) # 新しいタブを開く
driver.switch_to.window( driver.window_handles.last ) # 新しいタブへ移動する

driver.navigate.to url_1 # 新しいタブ内で、url_1 を開く
2021/07/10(土) 23:45:50.65ID:/14ZuXuK
TTY操作ってんならシェルスクリプトではなくexpectスクリプトでしょ
Linux/Unix/プログラム各板見たがexpectスレはないみたいで恐縮ではあるが
2021/07/11(日) 02:11:09.53ID:lZiRxAj0
Ruby にも、expect ある
2021/07/11(日) 06:05:30.31ID:KqeUxmyI
間に擬似端末を挟む方法で w3m や lynx を自動化したことならあるけど
w3m には自動化のためのインターフェースがあるみたいだよ。
その名を "Local CGI" という。
残念ながら man には書かれていないが、普通にダウンロードすれば
doc-jp/MANUAL.html に書いてある。
サンプルコードは Bonus/ にある。
ご所望のことが全部できるかは判らないが
他の方法よりは確実な動作を期待できそうだ。
779デフォルトの名無しさん
垢版 |
2021/07/12(月) 18:24:55.56ID:f04FcsMT
レス遅くなってすいません。

>>775
rubyでも書けるんですね。ちょっと詳しく調べてみます。

>>776 777
恥ずかしいですが、expectスクリプトという概念を初めて知りました。
インタラクティブを自動化出来るんですね。
目から鱗で震えました。ありがとうございます!

>>778
"Local CGI"調べてみました。
当方の問題ならこれで簡単に解決できそうです。

色々なコマンド後の処理を自動化したいなとずっと思ってたのですが
皆さんのおかげで解決しました。
ありがとうございます!スレチ失礼しました。
2021/07/15(木) 16:46:27.48ID:IbROtnW3
>/dev/nullでゴミ捨ててるコードをよく見るけど、
|:はダメなの?個人的によく使うんだけど

標準入力受け付けない:があったりするのだろうか
2021/07/15(木) 16:49:38.15ID:IbROtnW3
もちろんステータス見たい時はイエスマンの:はダメだけど、単に出力全部捨てたいケースね
標準エラーはパイプを通らないし、標準出力は:が食べる
2021/07/15(木) 17:56:15.08ID:CDvGwwEr
全部捨ててるのではなくて
最初に書いた時にSIGPIPEで死んでる
それに無駄にfork/cloneしてる
2021/07/19(月) 08:43:54.11ID:7DxAXQZB
【完全解説】ブログで月1万円稼ぐ具体的な方法!【アニメ動画】
https://www.youtube.com/watch?v=M_Umbak9icg&;t=401s
【ブログの始め方完全解説!】聞くだけでOK!初心者でもわかるよう基本から超丁寧に解説!【これだけでOK!】
https://www.youtube.com/watch?v=M1lUsqp7lgY
【凡人でもOK】何の実績も強みも無い人がブログで稼ぐ方法
https://www.youtube.com/watch?v=OODFq6YIbYg
【雑記ブログの始め方】「収益化させやすい」運営方法を5ステップで解説【ワードプレス】
https://www.youtube.com/watch?v=WWU_Akj2onM&;t=2s
ブログ運営のおすすめ必須ツール11選!【これだけで月100万円いけます】
https://www.youtube.com/watch?v=w1Oj_WIkNJs
【こんな人は伸びる!】上手くいくブロガーの特徴ベスト5!【月収100万超えブロガーが徹底解説!】
https://www.youtube.com/watch?v=nJG4SsoIN0w
【知らないと失敗する!】ブログで稼ぐための目標設定をプロが解説!
https://www.youtube.com/watch?v=wvWFGZ9hPIo
2021/07/19(月) 20:25:38.28ID:Vxw+8mZv
makeについて質問。
makeを多段に実行したとき、ログに「make[...]:」とか段数が出力されますが、あの段数をリセットする方法はありますか?

ログはmake: → make[1]: → make[2]: → make[3]:と深くなるにつれて出力が変わりますが、たとえば3段目でリセットして、make: → make[1]: → make: → make[1]:にする、みたいな。
2021/07/19(月) 21:17:27.86ID:1Cvv5Nld
makeスクリプトの中に
sh -ec make
挟むとか
2021/07/20(火) 10:34:00.51ID:KkKHDI5m
>>785
とくに変化はありませんでした。
別のプロセスを間にはさんでも変わらないようです。
2021/07/20(火) 10:34:49.18ID:KkKHDI5m
>>784
自己解決。
MAKELEVEL環境変数を設定。
2021/07/30(金) 18:22:37.15ID:7AkGA5GJ
スクレイピングしたいんですけど何を勉強すればいいですか
不正アクセスに問われたりしないでしょうか?
セキュリティ対策はどのようなことに注意すればよいでしょうか?
2021/07/30(金) 18:25:38.46ID:PFQXQc2n
誤爆だろな
2021/07/30(金) 19:56:33.31ID:pVd7PqHN
他人は誰も何も保証などしないし責任など取ってくれないので法律について自分で調べて安全圏と思える範囲内でやるしかない
2021/08/01(日) 08:18:52.13ID:gdH7Qy0E
なんでわざわざシェルスクリプトでスクレイピングするのか?
792デフォルトの名無しさん
垢版 |
2021/08/01(日) 09:34:42.67ID:4xiWMys0
wgetやcurlとjson
HTMLを加工しデータを抽出するためにsed、grep
不正アクセスのリスクはどこにでもある
相手次第でしかないから
過去に図書館のシステムを作ったエンジニアが
蔵書を調べたいという目的で負荷をかけない範囲でアクセスしてたら
訴えられたってのあったな

自分がやってたのを例に挙げると
配信サイトからの動画の一括ダウンロード
配信履歴の取得などか
動画はまあそのものだが
HTMLの履歴ページにアクセスしてページを繰って
回数、時間などの集計をして傾向を分析してた
id入れれば全部やってくれるから便利だったけど
一連の処理をするツールは自分で作った
2021/08/01(日) 10:34:45.80ID:GhkJ8vMz
>>792
不正アクセスの意味すら知らんやつがスクレイピングしたらだめだぞ
794デフォルトの名無しさん
垢版 |
2021/08/01(日) 11:26:43.15ID:boMMlR1G
>>792
あれは常識的に考えて安全なスクレイピングクライアントでも
サーバー側のミス(接続ごとにcloseしてない)が原因で
負荷かけてないつもりが負荷かかったーって理由で逮捕だから理不尽すぎるわ
2021/08/01(日) 12:49:15.25ID:ekL5DYUO
googleが関わっているサイトはそもそもスクレイピングをさせないよね
自動的にやっていることが分かった瞬間にアクセスを出来なくしている
アルゴリズムは非公開
時間間隔を見ているとかそういう単純なものではないらしい
2021/08/01(日) 13:16:33.62ID:RrS7g+U3
youtubeとか普通に出来てるんだが
特に規制くらったりは無いな
2021/08/01(日) 21:46:14.00ID:dQpg7mz5
google検索を自動にしようとすると規制を受けるよ
2021/08/04(水) 02:42:48.46ID:bE85vB+i
zshで走るスクリプトをもらったんですが、bashで走らせるとどこかでエラーになるようです。
一応bashで走るようにしたいんですが、スクリプトのどういう部分をチェックしたらいい、みたいの
ってあります?
2021/08/04(水) 04:05:35.99ID:rVD3iYVZ
ググればある
問題点を絞り込めないんだったら、Webで長く書いてくれてるのを読もう
2021/08/04(水) 10:23:51.95ID:sXlocsw8
1行ずつ貼り付けて実行してエラー箇所確認できないの
2021/08/04(水) 14:54:33.64ID:oTWoXRyh
いやーここの皆さんならエスパーしていただけるかと思ったのですが。

とりあえず line 25: zparseopts: command not found と出ました。
2021/08/04(水) 15:57:29.74ID:ZkQ7EvI3
zsh固有のを使ってるつもりが無くてもbashで動かないのは、
いくつかある動作の僅かな差異でもありえるし、そのどれを使ってもわからんから、
エスパーは無理だろな

command not found やん。モロzsh固有の使っててやん
zsh固有のなんてもっとあるんだから、エスパーは尚更無理だろうな

getopt/getoptsを書き換えればいいだろう、その部分の話なら
他にもあるんだったら、command not foundもわからないんだったら自力では山が高いとしか思えんけど、自力で頑張れ
2021/08/04(水) 17:01:53.30ID:vF9ccavM
つーか、何が起きるかわからんのに、別シェルのスクリプトをわからんままによく実行できるな。w
メチャクチャに壊されるかもなのに。
2021/08/04(水) 17:57:21.23ID:f2ZFKBK8
zshって真面目にドキュメント読もうとすると
機能多すぎて嫌になるよねw
2021/08/04(水) 17:57:42.62ID:f2ZFKBK8
おや?chromeから書き込めた???
2021/08/04(水) 17:58:08.01ID:f2ZFKBK8
あ、janeからも書き込めたw
禁止解除されたかwww
2021/08/04(水) 17:59:30.91ID:f2ZFKBK8
っていうか普通にzshインストールすりゃいいだけじゃん
2021/08/04(水) 18:18:14.91ID:VUbcTRKP
別にメチャクチャに壊されても構わんのだろう?
2021/08/04(水) 18:21:21.06ID:f2ZFKBK8
そのシェルスクリプトの最初に

if [ $BASH_VERSION ]; then
 sudo apt-get update && sudo apt-get install -y zsh
 zsh "$0" "$@"
fi

とか書いておけば動くんじゃね?www
2021/08/04(水) 19:21:42.69ID:ZkQ7EvI3
>>808
>もらった
んだから普通は知り合いからだろうし、何をするのかもわかってるだろう
知り合いで当たり前のように悪さするような>>803のようなのwはまあ普通はいないわな
あんまよくわかってなさそうで、何をするかはわかってるが途中で失敗した時の弊害とかはわからんかも知れんけど
2021/08/04(水) 19:31:41.64ID:f2ZFKBK8
zshで動くものをbashで動かしたら何が起きるかわからんじゃん
そのzshスクリプトはエラーでちゃんと停止するんか?
想定とは違うディレクトリで中途半端に動いたりしないんか?
2021/08/04(水) 19:36:30.26ID:ZkQ7EvI3
>何をするのかもわかってるだろう
のうちだろ
動作させないと何が問題かわからんし、そもそもどの程度の知識かもわからんし
仮に何かあっても、全く何もわからないのにbashで動くようにしたいという望みを持った勉強代だなw

動作させないと何が問題かわからんのだから、問いに対して動かしてみろと言うのは当たり前の話でしかないだろう
何を言いたいのかわからんぞ
2021/08/04(水) 19:56:41.44ID:oNOmhdBC
どうなるか分からんけどとりあえず動かしたいならdockerコンテナ上で試せばいい
2021/08/04(水) 20:04:22.89ID:vF9ccavM
>>810
結局、わからんのやないか!
アホなの?w

コマンドや変数展開の違いとかでちょうどヤバい状況になる可能性もあるのに。
2021/08/04(水) 20:09:58.00ID:ZkQ7EvI3
>>814
仮に何かあっても、全く何もわからないのにbashで動くようにしたいという望みを持った勉強代だなw
>>810にそもそもその言うのも含んでるし

そして実際にはとりあえず何も無かったようなのに、想像だけ読まないで文句言ってもしょうがないよ
2021/08/04(水) 21:08:01.90ID:vF9ccavM
>>815
知らんがな。
そもそも、>>803に悪意を想像すんな!
2021/08/04(水) 21:28:34.60ID:ZkQ7EvI3
>>816
何が知らんがなだよw
「メチャクチャ」に「壊される」からは悪意を想像しても不思議ではないと思うけどなあ
そんななんかダメなとこあったらメチャクチャに壊すスクリプトもそう無いだろうからな。そんなのばっか書いてるの?
2021/08/05(木) 00:09:48.84ID:r/zZzNU4
>>817
超ふしぎじゃ。
壊す主体は、動作の読めないスクリプトに決まってるやろ。
読解力ゼロなんか。w

> そんななんかダメなとこあったらメチャクチャに壊すスクリプトもそう無いだろうからな。そんなのばっか書いてるの?
たまたまrm *になるだけでおしまいやぞ?
2021/08/05(木) 02:16:14.66ID:uXuSxWIZ
>>818
何を言っているんだかな
何が「主体」だか、当たり前だろ。その主体に悪意があるかもしれないって話だろう
「メチャクチャ」に「壊される」が悪意を持って書かれたスクリプトを表すと読めても不思議ではないって話なんだが
読めないのはどっちなんだかなw

たまたまとか頻度がわからんな。すぐにそんなの想像してしまうぐらいの頻度で書いてるのか?w
とか、もうアレだけどw とりあえず単なる杞憂でしかないのは質問者の最初のレスで明らかだし、自己責任の範囲。やってくれないとレスしようがないし、
やってちょっとはその具体的な実行結果を出してくれたことにより、原因他が明確(*)になってんだから、ただの蛇足もこれまでにしとこな
*)お前の最初のレスもそれにより=ほとんど何も知らない人だったとわかってだろう?w
2021/08/05(木) 08:32:13.08ID:RD0C5s2g
ども、801です、盛り上がらせてしまいすみません。
どちらかというと興味として、素朴に、zshもbashもshベースで割と簡単に移植できるのかな? と
思ったんですが、結局それはNOってことですかね?

ちなみにzparseoptsというのはあからさまにzshの関数ぽいですが、
他に、どうやら変数(の中身)の展開に違いがある? ような感じでスクリプト中で呼ばれるコマンド
の引数に正しい値が渡らなかったりしてるようです。
2021/08/05(木) 09:00:33.95ID:zI5dwTpx
・POSIX(sh)のだけ使ってる
・bashにもzshにもあるのを使ってる
は、問題があったら調整ちょっと手直し程度
・zshにしかないのを使ってる
は、当然、該当部分の書き換えが必要

少しは知っているのならYESだが、
ちょっと何も知らないようなので自分で勉強する気やる気があるのかによる。今はNOだろな
2021/08/05(木) 09:53:44.33ID:r/zZzNU4
>>819
んな話はしていない。
無生物に悪意を妄想すな!
2021/08/05(木) 10:12:10.01ID:hsHiTAxc
shベースはPOSIX shベースって言えばいいと思うけど
bashとzshに共通のものってなんて言えばいいんだろうね
2021/08/05(木) 13:21:07.18ID:zot0pp1g
どちらもkshの美味しいとこ取りってとこ?
2021/08/05(木) 16:55:00.26ID:zI5dwTpx
>>822
わざとなのかなんなのか
悪意を持って書かれたスクリプト
な、いちおう
一行目からはわざとではないみたいだが、だったら、読解力ゼロなんかを自分で嚙みしめようなw
2021/08/05(木) 17:17:04.23ID:zI5dwTpx
>>823,824
bash/zshフレンドリー?w
共通仕様の公式なドキュメントがあるわけでもなく、書いた人の知見頼りだろから、そう何か明確な名称的なのはなさげかなあ

kshからのが多そうね。bashが最初でzshでも採用ってなかったかなあ
2021/08/05(木) 18:09:04.60ID:r/zZzNU4
>>825
んな話はしていない。
おまえが妄想を混ぜただけ。
読解力ゼロ。w
2021/08/05(木) 18:11:34.02ID:zI5dwTpx
>>827
マジでなのか
しつこいなw繰り返すだけのを、内容無いのを、よくできるなあ
何が面白い(自分にとってな)と思ってやってるの?会話としてでもなさげで
2021/08/05(木) 19:53:25.65ID:r/zZzNU4
>>828
おまえがな!w
2021/08/05(木) 21:42:19.84ID:2EEp5i6b
ばーかばーか
2021/08/05(木) 22:23:46.98ID:zI5dwTpx
>>829
会話にならん、なってないぞwイミフすぎ
何が面白い(自分にとってな)と思ってやってるのかだけしかもう興味がなかったけど、それを知るのも無理そうだなw
まあ終わりだな
2021/08/05(木) 23:29:03.88ID:vcYli3BC
setコマンドで位置パラメータを指定するときに、
引用符でかこわれていない変数がフィールド分割されるかどうかって決まってたっけ?

setの仕様にはそれらしき記述はなし。
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_25

BashやYashでは分割されて,Dashでは分割されない。
$ bash -c '
set -- "a b c" "d e f"
set -- $1 "$@"
echo $1
'
→a
$ yash -c '
set -- "a b c" "d e f"
set -- $1 "$@"
echo $1
'
→a
$ dash -c '
set -- "a b c" "d e f"
set -- $1 "$@"
echo $1
'
→a b c
2021/08/05(木) 23:45:20.11ID:r/zZzNU4
>>831
しゃあない。
おまえは読解力ゼロやからな。w
2021/08/06(金) 04:00:19.09ID:rcBy4jaU
>>832
setとか関係ないだろ
どのコマンドでも一緒だ
2021/08/06(金) 14:52:24.37ID:j92KspJx
>>834 ???
bash -c '
a="1 2 3"
printf "/%s/" $a
'
dash -c '
a="1 2 3"
printf "/%s/" $a
'
2021/08/06(金) 15:08:57.47ID:rcBy4jaU
>>835
あのさぁ、なんで実行結果を書かないの?
やってみればすぐわかるだろ

$ bash -c '
> a="1 2 3"
> printf "/%s/" $a
> '
/1//2//3/

dash -c '
> a="1 2 3"
> printf "/%s/" $a
> '
/1//2//3/


まーーーーーーーーーったく同じ
2021/08/06(金) 17:19:21.97ID:j92KspJx
>>836
いやさ,それの実行結果が一緒なのに,
$ bash -c '
set -- "a b c" "d e f"
set -- $1 "$@"
echo $1
'
→a
$ dash -c '
set -- "a b c" "d e f"
set -- $1 "$@"
echo $1
'
→a b c
こうなるのはおかしいだろってことだよ。

話わかってるか?
2021/08/06(金) 17:26:48.38ID:rcBy4jaU
消えな。いちいちデマ流すな。

dash -c '
set -- "a b c" "d e f"
set -- $1 "$@"
echo $1
'
a
2021/08/06(金) 19:29:06.94ID:mgQwZ+tq
dashで>>832見たとき試した時は、
a b c
になったけど、しばらくしたらなぜかw、
a
になるようになった、にしかならないようになった

とりあえず、現在は a b c は気のせい/何かの間違いだなと思ってるw
(多分なんかの環境値かなあ??)
メイン環境ではこんなんだったけど、ほぼあんま使わないクリーンに近いUbuntu(VM)でも a だからな

zshはデフォでは、
a b c
emulate posix でも a b c、emulate bash で a
posix でも a になるべきなんだろうな
単に shwordsplit on にするだけだけど emulate posix 時オプションセットのバグかなあ
2021/08/06(金) 19:38:55.34ID:rcBy4jaU
自分のミスを素直に認められるようになろうな
2021/08/06(金) 21:35:38.59ID:mgQwZ+tq
俺は ID:j92KspJx でないからな
2021/08/06(金) 23:44:34.47ID:j92KspJx
ミスといえば >>832>>834 の流れを読まずに
>>835 だけを見て意味不明な返信 (>>836) をしてたミス≠ヘどうするんだろうな。
2021/08/07(土) 01:06:35.02ID:m9mcPIVQ
お前もある意味勘違い(他の環境でなり試せばわかること)で騒いでいたんだから、
何をなんかその嫌らしいことすんなよ
2021/08/07(土) 01:06:57.62ID:m9mcPIVQ
俺は ID:mgQwZ+tq なw
2021/08/07(土) 01:50:03.69ID:m9mcPIVQ
>>839
>emulate posix でも a b c、emulate bash で a
>posix でも a になるべきなんだろうな
>単に shwordsplit on にするだけだけど emulate posix 時オプションセットのバグかなあ

posix shell を emulate する場合は posix ではなく sh か
じゃあ、psoix はなんなんねん、イマイチわからない。もしかしてそんなの無いとかか??w

emulate sh にしたら、
shwordsplit on
になるかと思いきや、
noshwordsplit off
って、shwordsplitに変わってnoshwordsplitに(同じだが)。そんなにoffに拘りたいのか

なかなかクセが強い感じw
ほぼzshネタ。でも、zshでposix shell互換にするにはというお話でした
2021/08/07(土) 03:07:17.12ID:UOc5M9xg
zshでemulate bachfileってやったら
バッチファイルモードになったYO!
2021/08/07(土) 08:27:51.67ID:m9mcPIVQ
なる。 zsh|sh|ksh|csh だけか
以外ではエラーにならずに zsh が指定されたとみなすか

起動時とのでオプション変わるから別のオプションセットがセットされてんのかと思った
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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