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

■ このスレッドは過去ログ倉庫に格納されています
2019/10/25(金) 00:08:45.53ID:6btPTvif
シェルスクリプトに関する総合スレッドです。

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

シェルスクリプト総合 その31
https://mevius.5ch.net/test/read.cgi/tech/1565446670/
2020/03/01(日) 13:11:39.38ID:TiMroEot
> docopts : the command line wrapper for bash.
2020/03/01(日) 13:16:40.87ID:4c8klxdl
bashってのもマイナス点だな
2020/03/01(日) 14:02:23.94ID:4tQoD8Fw
>>717
シェルスクリプト用のあれこれはすべてシェルスクリプト製じゃないといけない
なんて思ってないよな?

俺の知っているシェル・OS環境は,
sortやgrepみたいな外部コマンドどころか for文や変数処理みたいなシェルの内部動作も
みんなC言語で書かれてるんだが…
2020/03/01(日) 14:28:49.88ID:4c8klxdl
シェルスクリプト製じゃないと、1つのファイルに出来ないじゃん
2020/03/01(日) 15:29:04.21ID:4tQoD8Fw
× シェルスクリプト用のオプションパーサー
○ シェルスクリプト製のオプションパーサー

質問するときは明確な言葉で。
2020/03/01(日) 16:13:34.61ID:DvIm3g7W
ID:4c8klxdlの無能さ
724デフォルトの名無しさん
垢版 |
2020/03/02(月) 16:01:50.45ID:s5dtAso/
外部コマンド使いなくないならBusyBoxみたいなの使うしかないよな。
2020/03/02(月) 16:35:15.54ID:+7p1D0tE
ビルトインコマンドでいいじゃん
2020/03/02(月) 23:40:28.80ID:8PHDRupm
-help が --help の書き間違いには、ならない。
-help は、h,e,l,p のオプションを連結した書き方で、文法的に正しいから

だから、オプションの連結を禁止すればよい

そうすれば、-h, -e, -l, -p みたいに、書かないといけないから、
-help は、絶対に間違いになるから、指摘できる

オプションの連結は、情報処理の教育を受けた社員を想定しているから、
勉強していないような素人には、難しすぎるw
2020/03/03(火) 07:08:07.59ID:IKAJxND7
根本は中国人なのにマスコミも政府も絶対言わないし、
制限しない。

311の政府対応と同じ

政権変わっても変わらん
2020/03/03(火) 07:53:58.76ID:4u1zxYLS
誤爆するガイキチ
2020/03/03(火) 09:24:57.55ID:MNbayHdo
>>726
情報処理の教育を受けた社員しか想定していないので問題ない
2020/03/03(火) 10:15:38.32ID:l2g6jfLd
あとは自力で勉強探究心があるギーク向けだしな
2020/03/03(火) 10:44:21.85ID:z64lrdXB
find「せやな」
2020/03/03(火) 12:18:09.49ID:3ukr+OhM
任意のオプション引数ってさ、
-help が -h elp って解釈されるよね?
-h -e -l -p とどうやって区別するの?

-help って書いた時どっちの意味になるの?
733デフォルトの名無しさん
垢版 |
2020/03/03(火) 12:32:47.35ID:yHaKKNdM
あるスクリプトを作っていて、gitで管理しています。

~/src ← gitで管理
~/src/script.sh ← あるスクリプト
~/src/inc.sh ← あるスクリプトから読み込むライブラリ

script.sh から inc.sh を読み込むときに、
. ./inc.sh と書いています

script.sh をどのディレクトリからでも実行できるように
~/bin ディレクトリにシンボリックリンクを作成しました。
そして実行するとエラーになりました。

~/bin/inc.sh を読み込もうとしているからだと思いますが
いい解決方法はないでしょうか?
734デフォルトの名無しさん
垢版 |
2020/03/03(火) 14:02:09.02ID:5O39EjRd
>>733
~/bin/script.sh をシンボリックリンクではなく
cd ~/src && exec ./script.sh "$@"
を実行するシェルスクリプトにする
735デフォルトの名無しさん
垢版 |
2020/03/03(火) 14:06:21.11ID:yHaKKNdM
>>734
いろいろあって、そこはシンボリックじゃないとだめなんですよ
2020/03/03(火) 17:07:25.01ID:FfxSBx1I
>>732
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html
ここ読んで、どうぞ。
2020/03/03(火) 17:55:54.44ID:n9Ghdw3q
>>733
inc.shも~/bin(や特定固定のとこ)にシンボリックリンクを置いてしまえ
とか
pathme="$(which "$0")";
[ -L "$pathme" ] && pathme="$(readlink "$pathme")"
. "$(dirname "$pathme")/inc.sh"
とか
2020/03/03(火) 18:16:56.75ID:n9Ghdw3q
>>733
>~/bin/inc.sh を読み込もうとしているからだと思いますが
./inc.sh とかいう相対パスは現在のワーキングディレクトリ/カレントディレクトリからのだよ。sourceも同じく特殊なことはせずに
"$(pwd)/inc.sh" を読み込もうとしているのだろう
2020/03/03(火) 19:32:36.52ID:PcLjcySC
>>737
やっぱりreadlink使うしか無いですかね。
シンボリックのシンボリックのシンボリックとか考慮すると
readlink -fが必要になるけど、macOS版だとgreadlinkじゃないと動かないし
そもそもgreadlinkが入ってないとか、その他のOSではどうなるの?とか。
そういう面倒なコードはライブラリにしたいけど、そのライブラリを読み込むのに苦労するというw
2020/03/03(火) 19:58:06.90ID:BC6YzT5m
後出しかよ
シンボリックのシンボリックのシンボリック
なら、三行書けばいいだけじゃん
やっぱりって何がやっぱりなんだか
2020/03/03(火) 20:06:11.93ID:BC6YzT5m
pathme="$(command -v "$0")" || pathme="$0"
[ "$pathme" = "" ] && pathme="$0"
while [ -L "$pathme" ]; do
pathme="$(readlink "$pathme")"
done
. "$(dirname "$pathme")/inc.sh"
で、いいんじゃねえのかよぉ?なんでこんな簡単な対処も?と思うのでなんか穴があるか???
whichってPOSIXじゃなかったのね。煩そうだからそこも
2020/03/03(火) 20:07:32.72ID:BC6YzT5m
あ、二行目はいらない。もしくは一行目の||の後ろ
2020/03/03(火) 20:41:22.45ID:Lk6RorVj
>>740
沸点低すぎ。自分が欲しい情報を最初から全部準備しておけってか?
間違えるのが怖いってやつだなw
2020/03/03(火) 20:47:57.53ID:BC6YzT5m
なんかぐちぐち言っているけど、そんなこと対処すぐ自分でできるでしょなことをぐちぐちとという
ぐちぐち言う奴にはリアルでもムカつく沸点は低いのは確かだがなw

それと後出しなら当然のようにではなくて、すまんがが先にありがだろうに、何を当たり前のようにというのだな。リアルでもねw
2020/03/03(火) 20:55:19.44ID:dHOuVCIc
意訳 謝罪しろ
2020/03/03(火) 20:57:44.45ID:BC6YzT5m
そう読めるなら、沸点は俺より低すぎだな
2020/03/03(火) 20:59:54.63ID:FfxSBx1I
つまり自分の沸点の低さは自覚してるって訳か。
ひとまず安心した。
2020/03/03(火) 21:00:37.28ID:BC6YzT5m
うむ。キレやすく冷めやすいなw
2020/03/03(火) 21:01:39.37ID:UParEwxG
相手が何も考えてないと思ってるんだろうね。
そのやり方にはこういう問題があるって言ったら、
知ってるなら先にかけ!だもんな(苦笑)
2020/03/03(火) 21:04:21.79ID:BC6YzT5m
読めてないな、全然w
のくせに絡みたいのね。苦笑がいい味付けだねw苦笑いするぞ
2020/03/03(火) 21:05:27.34ID:V11R45Nz
毎度ながら回答者に問題があるよな

  /\___/\
/ /    ヽ ::: \
| (●), 、(●)、 |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|  ,,ノ(、_, )ヽ、,,   |  < まーたはじまった
|   ,;‐=‐ヽ   .:::::|    \_______
\  `ニニ´  .:::/
/`ー‐--‐‐―´´\
2020/03/03(火) 21:07:13.53ID:BC6YzT5m
何をそんなにひ弱なのかわからん...当事者でもないのに
>>740でそんなにダメージ受けるのか?一応ちゃんと回答してもいるんだがな。ひ弱すぎだろう
2020/03/03(火) 21:44:55.64ID:FfxSBx1I
弱い犬ほどなんとやら
2020/03/03(火) 21:53:18.68ID:BC6YzT5m
本題ではない瑣末wなことに拘るねえ、延々と。その動機がわからん
そう言うことだよ、皮肉屋さん
2020/03/04(水) 00:47:20.27ID:Hp65i7gp
煽るわけじゃないけどさ、シェル芸してる人って
アルゴリズムと呼べるようなコードを書ける人が少ない気がする

スクリプト言語で用意されてる便利な関数は使えても
その関数を自分で実装することはできないレベル
C言語で簡単な設定ファイルのパーサーも作れなさそう
2020/03/04(水) 01:10:12.01ID:nNNW6i++
>>733
Ruby で言えば、

require './file' は、カレントディレクトリからの相対パスだけど、
require_relative './file' は、現在のファイルからの相対パスになる

つまり、require_relative './file' は、__dir__ + "/file"

__dir__ は、現在のソースファイル(__FILE__)のあるディレクトリ名を、正規化された絶対パスで返します。
シンボリックリンクも解決されます
757701
垢版 |
2020/03/04(水) 01:34:09.01ID:nNNW6i++
>>732
Ruby の、OptionParser では、
-e オプションがあっても、-h オプションの引数、elp と解釈される

require 'optparse'

ARGV.replace %w(-help)

opts = { }
ARGV.options do |o|
o.on( "-e 引数", "引数" ) { |x| opts[ :e ] = x }
o.on( "-h 引数", "引数" ) { |x| opts[ :h ] = x }

o.parse!
end

p opts #=> {:h=>"elp"}
2020/03/04(水) 02:42:11.83ID:NN2zD8QV
知恵袋の最後の方で回答している気でいる雑種かな
2020/03/04(水) 05:44:22.12ID:aHZx5rgw
>>755
シェル芸ってなんの話?
2020/03/04(水) 08:01:55.10ID:1RejiZvB
>>759
qiitaとかtwitterでシェル芸で検索するとわかるよ
難読化(笑)とか意味のないことを一行でやったすげーとか言ってる連中

シェルスクリプトにもプログラムを書くのに必要な機能はあるのに
一行(シェル芸)で書くか、さもなければ他の言語のライブラリを使うしかないって考えてる連中

シェルスクリプトで一行で書けなければ、他の言語を使って数行かけて書くが
そもそもシェルスクリプトで数行書けば、他の言語より短く実現できたりするのに
アルゴリズムを書く能力がないからそれができない。そういう奴らが好きな言葉がシェル芸

目的の機能がないと何も出来ない。プリミティブな機能を使って実現する思考能力が欠けている
2020/03/04(水) 08:06:58.23ID:Eb7SAM7+
このスレでのだろう
自分がただ嫌悪しているのをいきなり表明されても
2020/03/04(水) 08:12:50.48ID:1RejiZvB
新しい話題を始めただけやで
2020/03/04(水) 11:31:06.93ID:8C7aLz+2
一般論だが
目的が解決できれば解決策は簡単な方がいい
シェルスクリプトで一行で書けるのならそれにこしたことはない
シェルスクリプトだと処理の限界もあらかじめ分かっているというおまけつき
2020/03/04(水) 11:53:24.17ID:nNNW6i++
シェル芸は、Software Design で、上田隆一が連載しているものだろ。
次回で連載終了だけど

たいてい、awk を使う
2020/03/04(水) 15:48:52.99ID:Tzh2DSUj
>>764
シェルスクリプトでプログラミングしないなら
「POSIXコマンドプログラミング」って改名したほうが良いと思う
awkプログラミングでもいいけどなw

シェル(CLIから実行するもの)とシェルスクリプト(.shファイルにまとめたもの)と
厳密に区別してるならいいけど、実際にはシェルスクリプトの中でシェル芸してるんだよなw

例えばRubyなんかでも外部コマンドを呼び出せるわけでRubyのなかでシェル芸もできる。
これをRubyコードと呼べるかというと疑問がでるだろう?それと同じ。

>>763
> 目的が解決できれば解決策は簡単な方がいい
という条件からすると、Rubyのなかでシェル芸するのが正解なパターンは結構多いと思う。
でもやらないことの方が多いだろう。理由はなんだろうか?処理速度かな?
その理由と同じものが、シェルスクリプトにも当てはまると思う。
つまり(Rubyの場合と同様に)シェルスクリプトの中でシェル芸すんな(笑)

> シェルスクリプトだと処理の限界もあらかじめ分かっているというおまけつき
一行では書けなくても、数行書けば実現できることも多い。
シェル芸しかできないから、一行で書けなければムリと諦めてる奴が多い。
たとえばRubyだと1行でできることが、C言語だと数行かかることは多いが、
それを「C言語の限界」と言うやつはいないだろう。だけどシェルスクリプトだと
それをシェルスクリプトの限界だと言う。単に自分の力の限界なだけなのにな。
2020/03/04(水) 16:11:16.83ID:nkrxx/zT
>>765
> 単に自分の力の限界なだけなのにな。

うむ、納得
2020/03/04(水) 16:14:02.93ID:yiNVycVp
ロジックが整理されておらず
バグが多数潜んでるシェルスクリプトかのような長文

言語が考え方に影響を与えることが分かるいい例だな
2020/03/04(水) 16:37:48.08ID:Tzh2DSUj
>>767
理由が書いてない、説明がまったくないので同意しないw
自分が思ったことつぶやいただけだな
2020/03/04(水) 18:50:02.63ID:RW1/oxrb
いちゃもんつける(自分のストレス発散)のが目的なもんだから
段落ごとの方向性がバラバラでつながりが無い/意味不明な文章
2020/03/04(水) 19:11:58.65ID:Tzh2DSUj
というレスはイチャモン以外の何物でもないけどなw
771デフォルトの名無しさん
垢版 |
2020/03/04(水) 23:41:25.17ID:ito9Fws2
>>733
. inc.sh
にすればPATHから探す
2020/03/04(水) 23:48:29.11ID:NdgTFoKb
>>771
PATHから探したいんじゃないぞ
773756
垢版 |
2020/03/05(木) 00:24:52.81ID:PBcHTAfh
>>756
に書いてある

つまり、カレントディレクトリからの相対パスではなく、
このファイルからの相対パスになる

だから、このファイルがあるディレクトリの絶対パスを求めて、
それに相対パスを加えるとよい
2020/03/05(木) 00:25:52.24ID:npHipiyQ
>>773
絶対パスってどういう意味で言ってる?
2020/03/05(木) 01:35:06.58ID:HPS3pF1O
>>758に納得してしまう
776756
垢版 |
2020/03/05(木) 04:40:53.09ID:PBcHTAfh
>>756
に書いてあるけど、例えば、Ruby では、
script.rb に、スクリプトを書いてるとき、

p __FILE__
p __dir__

出力
"c:/Users/Owner/Documents/test/script.rb"
"c:/Users/Owner/Documents/test"

__FILE__ は、このファイルの絶対パス、
__dir__ は、このファイルがあるディレクトリの絶対パスを表す

だから、このファイルから見て、相対パス、./file なら、
__dir__ + "/file"

つまり、c:/Users/Owner/Documents/test/file
2020/03/05(木) 07:57:16.42ID:GG3NZ1nL
ただのガイキチか
2020/03/06(金) 15:44:20.26ID:el16gBAN
Rubyの人に質問するけど
Rubyでは引数処理に便利な機能って標準で提供されてるの?
2020/03/06(金) 16:18:48.95ID:dB1opsgL
すでに書かれてるだろ。自演か?w
興味あるならあれが標準かとか具体的なのは自分で調べろよ、もしくはRubyスレでだな
2020/03/06(金) 23:22:42.71ID:VrRz91DJ
>>779
Rubyのヒトは会話を装う自演なんて高等なことはできないぞw
2020/03/06(金) 23:52:31.10ID:uvQVOrPP
ようやくbashに慣れてきたけど最低限覚えとけって言語はなんだろうか
頻繁に使うのはsed・awk・grep程度なんでやるならperlの方がいいのかね
今後のためにpythonをと言われても素人に使う機会ないわ
2020/03/06(金) 23:59:29.67ID:dfpAZ0dm
>>781
素人に使う機会がある
機能、用途を教えてくれないか?
2020/03/07(土) 00:00:23.26ID:z518jRtl
>>778
ARGV, ARGFが組み込み、OptionParserが標準添付ライブラリで提供されてる

ARGVは配列に引数が入ってるやつでだいだいどの言語にもあるやつ
ARGV[0]が実行コマンドじゃなく1つ目の引数になってるのが微妙に使いやすい

ARGFは引数でファイル名を受け取る場合と
標準入力でファイルを受け取る場合を1つの処理で書ける便利なやつ
Ruby以外では見たことない

OptionParserはショートオプション/ロングオプション/サブコマンドとかをサポートしてて
getoptやgetoptsに比べれば書きやすいし便利ではある
ただもっと高機能なgemもあるので依存性とのトレードオフでライブラリを選ぶ感じ

総じて簡単には書けるんだけどPerlなんかに比べるとインタプリタの起動が超遅いから
コマンド叩いてから処理が終わるまでの時間が比較的長い場合にしか使わない
2020/03/07(土) 10:41:41.36ID:EQxW6/Yc
>>780
どうだろう?w
785デフォルトの名無しさん
垢版 |
2020/03/07(土) 13:57:14.80ID:wqSODED6
if文でディレクトリの権限を確認するにはどうしたらいいですか?
-wをやってみたのですがうまく動作してくれません。
ファイルにしか使えないのですかね?
2020/03/07(土) 19:03:29.05ID:Tac4Jm8B
rootだからじゃね?いちおう対象がディレクトリも-wで書き込みの可否は返してるけど
787デフォルトの名無しさん
垢版 |
2020/03/07(土) 22:08:31.10ID:wqSODED6
>>786
動作としては書き込み権限の有無を確認し、無ければ付与するという動作が作りたかったです。
いろいろ調べたところrootだとパーミッションを無視するらしいので、
if [ ! -w ディレクトリ ]
上記の記載をしているスクリプトの実行ユーザがrootの為、全てにおいて書き込み権限があると認識されてしまっていると考えられます。
2020/03/07(土) 23:54:32.58ID:hanAtv/p
「chmod ディレクトリ」で検索!
789デフォルトの名無しさん
垢版 |
2020/03/08(日) 00:08:43.59ID:rfEr1WGY
>>788
chmodでディレクトリの権限を000にしても可能でしたが…
2020/03/08(日) 00:50:11.68ID:TYqtbVyi
パーミッションチェックじゃなくて書き込みができるか?だったはず
791デフォルトの名無しさん
垢版 |
2020/03/08(日) 02:47:35.54ID:rfEr1WGY
>>790
そうなのですね。
それであれば、000にしてもrootは書き込み可能だから毎回書き込み権限が付与されないは正しい挙動ですね。
実行ユーザーを一般ユーザーに変えるか、lsの結果にwの文字があるかを判別する処理に変えるが対処法になりそうですね。
2020/03/08(日) 03:12:50.23ID:P20sq25k
>>791
そう、思い出した。ファイルのパーミッションを自分から読み書きできないように変更して
本当に読み書きできないか、-wや-rでチェックするコードを書いたら、rootの場合は
それが上手くいかなかった。だからrootではそのチェックをしないようにした。
2020/03/08(日) 05:16:19.40ID:Xv2JcybJ
rootの場合でも対象に書き込めるんだから真っ当な動作だわな
2020/03/08(日) 12:36:43.71ID:uLLaNXsz
rootが「一見書き込めない」ファイルは存在しうるけど
「書き込む許可をどうしても得られない」ファイルはシステムの不具合でもない限り存在しないからね。
じゃなきゃそのファイルを誰が処理するのかって話になる。

UID 0は自分が持ち上げられない岩は作れないのだ。
2020/03/08(日) 19:11:47.52ID:RzwfZ5D7
Read onlyでマウントしたのはボリュームはrootでも書き込めないよね。そもそも書き込めないメディアも
あくまでも-wは書き込めるかの判定だから使う側が勘違いしてるだけで判定としてはrootでも全く正常な動き
2020/03/08(日) 19:58:45.91ID:T8rZAzyK
cd -Lの-Lってデフォルト?
2020/03/08(日) 20:25:40.77ID:kizyo8RY
デファクトでデフォルト
798デフォルトの名無しさん
垢版 |
2020/03/08(日) 22:45:41.68ID:rfEr1WGY
>>795
スクリプトを一般ユーザーで実行した際に書き込み権限があるかを判別するって認識でいいんですかね?
rootだと基本全部書き込めるから、一般ユーザーくらいでしか機能しない処理のような気がします。
2020/03/08(日) 23:08:52.65ID:5CM70Uar
単に現在(のユーザで)書き込めるかどうか判別してるにすぎないざね。権限とかは置いておいて。書き込める=書き込める権限と言うのならそうかもしれんが

ちなみに、macOSだとロックというのがあり、ロックするとrootでも書き込めないよう
権限とかではなくて単に書き込めるかどうかだな。Read onlyでrootで書き込めないのもそうだし
権限を調べたいならrootではなくてだろうね。もしくは詳しく権限を調べるとか
2020/03/09(月) 01:15:25.69ID:EmgiRGOf
>ちなみに、macOSだと〜
macOSというかBSDだな。FreeBSD/OpenBSDにもあった、そして挙動が同じ
2020/03/09(月) 08:15:32.71ID:nSyyVcXg
>>798
> 一般ユーザーくらいでしか機能しない処理のような気がします。

逆じゃね?w
rootくらいでしか問題にならないでしょ

rootでなんか普通使わねーw
2020/03/09(月) 15:04:18.04ID:rWRx//dL
PWDってさ、スクリプト実行前に設定されるって思う?
2020/03/09(月) 15:50:41.07ID:sbrbbxpE
されてないシェルなんてあったらそのシェルのバグだろう
2020/03/09(月) 16:01:54.84ID:sbrbbxpE
いや、どいつもこいつも設定しないのか。意外だな
PWD
This variable shall represent an absolute pathname of the current working directory. It shall not contain any filename components of dot or dot-dot. The value is set by the cd utility.
> The value is set by the cd utility.
まんまなのか(?)
2020/03/09(月) 16:26:06.84ID:sbrbbxpE
いや、スクリプトファイルの実行時にならされる、-c のコマンド羅列文字列の実行時にはされないかな?
2020/03/09(月) 18:07:49.62ID:bHKN7jy6
どのシェルも設定されるなーって思ってたらkshはされんかった
export $PWD=aaaってやって
ksh -c 'echo $PWD'したらaaaってでた
2020/03/09(月) 18:10:56.70ID:bHKN7jy6
-cだけじゃなくてksh a.shってやってもaaaってでたw
最初、echo $PWDの前に確認のためにpwdコマンドやっていて気づかんかった
kshだとpwdやったらPWDも設定されたw
2020/03/09(月) 18:14:17.37ID:bHKN7jy6
おぉ? kshだとcd .してもPWDは設定されんかったぞw
流石に別ディレクトリに移動したら設定されるが
2020/03/09(月) 18:33:20.75ID:6JwbfpR0
しまった。>>804,805は -c で " で括ってた。そりゃあ...すまん

kshも設定されない?(??)
export HOGE=hoge
export PWD=hage
ksh -c 'echo $PWD $HOGE'
ってやったら、(pwdの) hoge かな。バージョン違いかな? うちのは 93u+
2020/03/09(月) 18:39:14.18ID:bHKN7jy6
面白いなw
export PWD=aaaってやって以下のスクリプトを実行したら

echo $PWD # aaa
echo $(echo $PWD) # /home/ore
echo $PWD # /home/ore
ってなった。

どこで設定してるんだよwww
kshは93u+
2020/03/09(月) 18:40:22.34ID:6JwbfpR0
>>808
どういうテストなのかわからんけど、93u+ ではこんなん
$ cd /home
$ echo $PWD
/home
$ PWD=hoge
$ echo $PWD
hoge
$ pwd
/home
$ echo $PWD
hoge
$ cd .
$ echo $PWD
/home
2020/03/09(月) 18:40:35.23ID:bHKN7jy6
echo実行後にせってされてるのでは?と思う人のために

echo $PWD # aaa
echo $PWD # aaa
echo $(echo $PWD) # /home/ore
echo $PWD # /home/ore
2020/03/09(月) 18:41:47.16ID:6JwbfpR0
>>810
同じか。ナゾだなw
2020/03/09(月) 18:42:40.76ID:bHKN7jy6
>>811
あ、kshに入ってから実行してるわけじゃないよ
bashからksh -c とか ksh a.sh とかしてる

ksh上でやってるならプロンプト表示する処理の
どこかで設定されてるのでは?
2020/03/09(月) 18:45:40.99ID:bHKN7jy6
echo $PWD # aaa
:
echo $PWD # aaa

-----

echo $PWD # aaa
$()
echo $PWD # aaa

-----

echo $PWD # aaa
$(:)
echo $PWD # /home/ore

サブシェルに入ってから?なんか実行すると設定されるっぽいw
2020/03/09(月) 18:46:18.77ID:6JwbfpR0
$ ksh -c 'PWD=hoge;echo $PWD;cd .;echo $PWD'
でも、
hoge
/home
かな
2020/03/09(月) 18:48:20.68ID:bHKN7jy6
つまりkshで安全に$PWDを使うためには
最初の方で$(:)を実行しておけってことだなw
これが最速の方法か知らんけど、pwd > /dev/null よりかは速そう。いやどっちだろ?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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