X



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

レス数が1000を超えています。これ以上書き込みはできません。
0987デフォルトの名無しさん
垢版 |
2019/08/11(日) 17:49:05.08ID:k+c7cOcw
ああ、/bin/sh が bash で、しかも、bash が 3.x の場合かもしれない
/bin/sh が bash であっても、#!/bin/sh だと>>975のスクリプトはうまく動かないのはね。なので、うっかりとしか思えんな
0988デフォルトの名無しさん
垢版 |
2019/08/11(日) 17:50:38.09ID:++HFlOfG
> /bin/sh が bash の場合、ちゃんとは動かない

だからちゃんと動かないコードを直すべきでは?
/bin/shはdash, bash, ash, ksh, zsh, mksh のいずれかの可能性がある(他にもあるかもしれない)
0989デフォルトの名無しさん
垢版 |
2019/08/11(日) 17:51:46.41ID:k+c7cOcw
>>982って言ってるだろ
/bin/sh が bash であっても、#!/bin/sh だと>>975のスクリプトはうまく動かない
ね。詳しく正しくは
0990デフォルトの名無しさん
垢版 |
2019/08/11(日) 17:57:05.79ID:++HFlOfG
>>987
全角スペースは見やすくするために流石にわざとだとして、
>>975のスクリプトはbash 2.x以上であれば動くよ。確認済み。
(bash 1系の環境は作ってないのでわからん)

Debian、Ubuntuであれば /bin/sh じゃ動かないので
手元のMacかな?それで試しただけだろうね。
0991デフォルトの名無しさん
垢版 |
2019/08/11(日) 17:59:38.45ID:++HFlOfG
>>989
/bin/shのシンボリックリンクの実体がbash、
つまりposixモードの話をしてるのかもしれないけど、
posixモード(set -o posix)であっても [[ ]] は認識しちゃうからね。

bashのposixモードは、挙動の違いをposixに合わせるだけで
posixにはない拡張機能を無効にすることはないみたい。
0992デフォルトの名無しさん
垢版 |
2019/08/11(日) 18:01:22.10ID:++HFlOfG
なので>>989が何を言いたいのかわからんね。
具体的に、どういう理由でbashで>>975が動かないのか
どのようなエラーが出力されるのかを言えば
説得力も出ると思うよ。

レス待ってるねw
0993デフォルトの名無しさん
垢版 |
2019/08/11(日) 18:01:36.14ID:k+c7cOcw
#!/bin/sh
てか、sh とコマンド打って起動してでも、echo -n hello は -n hello と表示されるんだなあ。うちのはw
type echo しても echo is a shell builtin だしね。てか、/bin/echo は -n が効くやつだけど
0995デフォルトの名無しさん
垢版 |
2019/08/11(日) 18:07:05.61ID:++HFlOfG
> echo -n hello は -n hello と表示されるんだなあ。
POSIXのechoには-nはないからね。-nに依存するコードを書いてはいけない。
POSIX準拠で書く理由が増えたね。
0996デフォルトの名無しさん
垢版 |
2019/08/11(日) 18:07:37.64ID:k+c7cOcw
誰かさんも使ってると言っていた環境なんだけどなw
$ which sh
/bin/sh
$ ls -l /bin/sh
-r-xr-xr-x 1 root wheel 618480 5 4 16:05 /bin/sh
$ sh --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
Copyright (C) 2007 Free Software Foundation, Inc.
$ sh
$ echo -n hello
-n hello
$ exit
exit
$ bash --posix
$ echo -n hello
hello$
0997デフォルトの名無しさん
垢版 |
2019/08/11(日) 18:08:18.76ID:++HFlOfG
ま、案外
> /bin/sh が bash であっても、#!/bin/sh だと>>975のスクリプトはうまく動かない
の理由は全角スペースが入ってるからだったりしてねw
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 40日 19時間 5分 18秒
レス数が1000を超えています。これ以上書き込みはできません。

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