シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
シェルスクリプト総合 その33
https://mevius.5ch.net/test/read.cgi/tech/1584893550/
探検
シェルスクリプト総合 その34
■ このスレッドは過去ログ倉庫に格納されています
2020/08/21(金) 15:17:55.64ID:mArnj/tT
2020/09/08(火) 11:14:25.07ID:ymgasiE/
48デフォルトの名無しさん
2020/09/08(火) 11:52:32.28ID:4xL00uJx >>47
[root@test-srv test]# ll
合計 8
-rwxrwxrwx 1 root root 216 9月 8 11:46 a.sh
-rwxrwxrwx 1 postgres postgres 115 9月 8 11:44 b.sh
[root@test-srv test]# cat a.sh
#!/bin/bash
echo "a.shの処理を開始します。"
echo "a.shのテスト出力、引数は${1}です。"
echo "b.shを実行します"
su - postgres `/home/postgres/work/work/test/b.sh ${1}`
echo "a.shを終了します"
exit 0;
[root@test-srv test]# cat b.sh
#!/bin/bash
echo "b.shの引数1は${1}です。"
echo "b.shのテスト出力です。"
echo "b.shのテスト出力です。"
exit 0;
[root@test-srv test]# ./a.sh test
a.shの処理を開始します。
a.shのテスト出力、引数はtestです。
b.shを実行します
-bash: b.shの引数1はtestです。: そのようなファイルやディレクトリはありません
a.shを終了します
[root@test-srv test]#
少し処理を変えた結果もこんな下の感じです。
[root@test-srv test]# ./a.sh test
テスト: 引数1はtestです: command not found
これはテストです
[root@test-srv test]# ll
合計 8
-rwxrwxrwx 1 root root 216 9月 8 11:46 a.sh
-rwxrwxrwx 1 postgres postgres 115 9月 8 11:44 b.sh
[root@test-srv test]# cat a.sh
#!/bin/bash
echo "a.shの処理を開始します。"
echo "a.shのテスト出力、引数は${1}です。"
echo "b.shを実行します"
su - postgres `/home/postgres/work/work/test/b.sh ${1}`
echo "a.shを終了します"
exit 0;
[root@test-srv test]# cat b.sh
#!/bin/bash
echo "b.shの引数1は${1}です。"
echo "b.shのテスト出力です。"
echo "b.shのテスト出力です。"
exit 0;
[root@test-srv test]# ./a.sh test
a.shの処理を開始します。
a.shのテスト出力、引数はtestです。
b.shを実行します
-bash: b.shの引数1はtestです。: そのようなファイルやディレクトリはありません
a.shを終了します
[root@test-srv test]#
少し処理を変えた結果もこんな下の感じです。
[root@test-srv test]# ./a.sh test
テスト: 引数1はtestです: command not found
これはテストです
2020/09/08(火) 12:32:53.69ID:o44vEJ9h
`/home/postgres/work/work/test/b.sh ${1}`
` じゃん
su - postgres b.shの引数1はtestです。
をしようとしてるじゃん、
-bash: b.shの引数1はtestです。: そのようなファイルやディレクトリはありません
のメッセージの通りじゃん?
` じゃん
su - postgres b.shの引数1はtestです。
をしようとしてるじゃん、
-bash: b.shの引数1はtestです。: そのようなファイルやディレクトリはありません
のメッセージの通りじゃん?
2020/09/08(火) 13:38:46.77ID:wSlh5XRm
いったい何がしたいんや?
バッククォートは何のため?
バッククォートは何のため?
51デフォルトの名無しさん
2020/09/08(火) 13:41:35.55ID:4xL00uJx52デフォルトの名無しさん
2020/09/08(火) 13:44:08.25ID:4xL00uJx2020/09/08(火) 13:47:28.39ID:o44vEJ9h
` で囲んだのは、その時点でそれが実行されてその出力に置き換えられる。$() はほぼ等価
su - postgres `/home/postgres/work/work/test/b.sh ${1}`
は
su - postgres b.shの引数1はtestです。
をやろうとしてる(b.shの引数1はtestです。に b.shのテスト出力です。もあるけどな)
だから、
-bash: b.shの引数1はtestです。: そのようなファイルやディレクトリはありません
というメッセージなんだよ
su - postgres b.shの引数1はtestです。
をしようとしてるんだから
やりたいのは、
su - postgres `/home/postgres/work/work/test/b.sh ${1}`
ではなくて、
su - postgres "/home/postgres/work/work/test/b.sh ${1}"
とかだろう
su - postgres `/home/postgres/work/work/test/b.sh ${1}`
は
su - postgres b.shの引数1はtestです。
をやろうとしてる(b.shの引数1はtestです。に b.shのテスト出力です。もあるけどな)
だから、
-bash: b.shの引数1はtestです。: そのようなファイルやディレクトリはありません
というメッセージなんだよ
su - postgres b.shの引数1はtestです。
をしようとしてるんだから
やりたいのは、
su - postgres `/home/postgres/work/work/test/b.sh ${1}`
ではなくて、
su - postgres "/home/postgres/work/work/test/b.sh ${1}"
とかだろう
54デフォルトの名無しさん
2020/09/08(火) 13:58:43.10ID:4xL00uJx2020/09/08(火) 14:04:44.26ID:o44vEJ9h
ちゃんとメッセージ見ような。だいたいにおいて正しく問題点が書いてあるんだからw
2020/09/08(火) 15:16:17.47ID:wSlh5XRm
2020/09/08(火) 15:37:36.08ID:o44vEJ9h
だが、typoでもよくみるメッセージだからな
それを実行しようとしてる、なぜなんだぜぐらいから始めないとな
それを実行しようとしてる、なぜなんだぜぐらいから始めないとな
2020/09/08(火) 15:59:34.51ID:7o8rcsWh
ブログはクォート関係はよく文字化けする
2020/09/08(火) 17:39:44.03ID:ymgasiE/
cshやAndroidにも対応した上で
POSIXに準拠したシェルスクリプトの書き方
(cshの場合はshで起動し直すらしい)
https://togetter.com/li/1077808?page=5
ここまでやる意義は不明w
POSIXに準拠したシェルスクリプトの書き方
(cshの場合はshで起動し直すらしい)
https://togetter.com/li/1077808?page=5
ここまでやる意義は不明w
2020/09/08(火) 20:25:26.31ID:7o8rcsWh
>>59
それは読んだことがあるが
どうももやもやしている
どういう環境でそれが必要なのかが書いてないからかな?
Androidといわれてもー
バージョンわからないしー
検証環境用意できないしーw
読んでて思うのはtogetterはツイートをまとめるだけなので
検証内容をまとめるには適してねーわ
それは読んだことがあるが
どうももやもやしている
どういう環境でそれが必要なのかが書いてないからかな?
Androidといわれてもー
バージョンわからないしー
検証環境用意できないしーw
読んでて思うのはtogetterはツイートをまとめるだけなので
検証内容をまとめるには適してねーわ
2020/09/09(水) 10:55:40.97ID:L9ofENhq
>>60
同意。
「結局なにが分かったのか」
「解決方法はどうだったのか」
っていう,一番重要な情報もめちゃめちゃ
みにくいところにある。
しかも,まとめ主は
「あとで記事にする」と言っているのに
その後音沙汰がないし
アカウント乗り換えてる模様。
怪しすぎる。
同意。
「結局なにが分かったのか」
「解決方法はどうだったのか」
っていう,一番重要な情報もめちゃめちゃ
みにくいところにある。
しかも,まとめ主は
「あとで記事にする」と言っているのに
その後音沙汰がないし
アカウント乗り換えてる模様。
怪しすぎる。
2020/09/09(水) 11:00:38.40ID:ShrkmEVF
2020/09/09(水) 11:05:11.17ID:ShrkmEVF
だれかもうずばっと シバンはちゃんと書きましょう。
shを使うなら #!/bin/sh です。このパスがない環境はもうありません
って言ってくれないかな?w
真偽不明でタイトルだけ残ってて困る
shを使うなら #!/bin/sh です。このパスがない環境はもうありません
って言ってくれないかな?w
真偽不明でタイトルだけ残ってて困る
2020/09/09(水) 11:54:49.47ID:L9ofENhq
>>63
ちょっとつっかかるけど
「このパスがない環境はもうありません」
これも根拠なくないか?
POSIXでは定められていない訳だし,
Solarisだと/bin/shはめちゃめちゃ古い。
POSIX shは/usr/xpg4/bin/shにある。
ちょっとつっかかるけど
「このパスがない環境はもうありません」
これも根拠なくないか?
POSIXでは定められていない訳だし,
Solarisだと/bin/shはめちゃめちゃ古い。
POSIX shは/usr/xpg4/bin/shにある。
2020/09/09(水) 12:45:45.54ID:SvwSYfrG
#!/usr/bin/env sh
2020/09/09(水) 13:06:06.44ID:L9ofENhq
2020/09/09(水) 17:24:48.34ID:QPd8QPwA
たまたまSolarisの環境があるから調べてみたが、
> Solarisだと/bin/shはめちゃめちゃ古い。
これはSolaris 10以前の話。古いというかPOSIX以前のBourne Shellだな。
これがSolaris 11ではkshに変わっている。
それからシステムの初期設定PATHと
getconf PATHは必ずしも同じではない
Solarisのシステムの初期設定PATHは/usr/sbin:/usr/binなんだが互換性上の理由(?)で
POSIXに準拠してない可能性があるコマンドが入っていると考えて良さそう
getconfはPOSIX準拠のコマンドということもあり、getconf PATHもPOSIX準拠のためのPATHを返す
例えば /usr/xpg4/bin/ が優先されている。ただし /usr/sbin は入ってない。Linuxでも/bin:/usr/binしか返ってこないな
だから PATH=$(getconf PATH) なんかしてしまうと fdisk が使えなくなったw
ちなみに /bin はどちらのPATHにも入ってない
getconf PATHをどう使うかもOS依存な気がするけど、Togetterまとめに書いてあるように
PATH="$(command -p getconf PATH):$PATH"
こうすることで、標準を壊すことなくPOSIX準拠に近くするという意味になるんだろう
ちなみにだけどcommandの-pオプションは古いzsh(たしか4.0あたり)で使えなかったりするけどなw
個人的にはgetconfがない環境があるのは知っていたので、そこは何も不思議はない
Togetterまとめに書いてあるPATHの初期化方法は何をやりたいのかよくわからんw
なんつーか一行にしようとして意味不明にしてるとしか思えんな。こんなんでいいやろ?
default_path="$(command -p getconf PATH 2>/dev/null ||:)"
[ "$default_path" ] && PATH="$default_path:$PATH"
> Solarisだと/bin/shはめちゃめちゃ古い。
これはSolaris 10以前の話。古いというかPOSIX以前のBourne Shellだな。
これがSolaris 11ではkshに変わっている。
それからシステムの初期設定PATHと
getconf PATHは必ずしも同じではない
Solarisのシステムの初期設定PATHは/usr/sbin:/usr/binなんだが互換性上の理由(?)で
POSIXに準拠してない可能性があるコマンドが入っていると考えて良さそう
getconfはPOSIX準拠のコマンドということもあり、getconf PATHもPOSIX準拠のためのPATHを返す
例えば /usr/xpg4/bin/ が優先されている。ただし /usr/sbin は入ってない。Linuxでも/bin:/usr/binしか返ってこないな
だから PATH=$(getconf PATH) なんかしてしまうと fdisk が使えなくなったw
ちなみに /bin はどちらのPATHにも入ってない
getconf PATHをどう使うかもOS依存な気がするけど、Togetterまとめに書いてあるように
PATH="$(command -p getconf PATH):$PATH"
こうすることで、標準を壊すことなくPOSIX準拠に近くするという意味になるんだろう
ちなみにだけどcommandの-pオプションは古いzsh(たしか4.0あたり)で使えなかったりするけどなw
個人的にはgetconfがない環境があるのは知っていたので、そこは何も不思議はない
Togetterまとめに書いてあるPATHの初期化方法は何をやりたいのかよくわからんw
なんつーか一行にしようとして意味不明にしてるとしか思えんな。こんなんでいいやろ?
default_path="$(command -p getconf PATH 2>/dev/null ||:)"
[ "$default_path" ] && PATH="$default_path:$PATH"
2020/09/09(水) 17:25:20.59ID:QPd8QPwA
↑でこれはシバンがないほうがいいかどうかとは全く関係ない話
まぜるなや
まぜるなや
2020/09/09(水) 18:30:55.68ID:COY4N7BF
宇宙刑事シバン
2020/09/09(水) 18:57:01.22ID:L9ofENhq
2020/09/09(水) 18:59:49.28ID:L9ofENhq
2020/09/10(木) 02:57:03.19ID:wmlkkGXD
>>71
command -p (もしくはただのcommand)って
シェルで微妙に動作が違うんだよな
ちゃんとまとめてないからきっちりとは言えんけど
例えば dash や ksh だと command -p printf --help は
ビルトインコマンドが実行される
zshだと外部コマンド
zsh で command -p : がエラーになるのはそのせい
command -p (もしくはただのcommand)って
シェルで微妙に動作が違うんだよな
ちゃんとまとめてないからきっちりとは言えんけど
例えば dash や ksh だと command -p printf --help は
ビルトインコマンドが実行される
zshだと外部コマンド
zsh で command -p : がエラーになるのはそのせい
2020/09/10(木) 03:02:01.02ID:wmlkkGXD
なんで昔の人って
command ・・・ 外部コマンドを実行する
builtin ・・・ ビルトインコマンドを実行する
function ・・・ シェル関数を実行する
みたいに全部作ろうと思わなかったんだろうな?
ユースケースを思いつかなかったということなんかな
command ・・・ 外部コマンドを実行する
builtin ・・・ ビルトインコマンドを実行する
function ・・・ シェル関数を実行する
みたいに全部作ろうと思わなかったんだろうな?
ユースケースを思いつかなかったということなんかな
2020/09/10(木) 03:19:24.10ID:Imxe+iF3
zsh
% type command
command is a shell builtin
https://linux.die.net/man/1/zshbuiltins
command [ -pvV ] simple command
The simple command argument is taken as an external command instead of a function or builtin and is executed. If the POSIX_BUILTINS option is set, builtins will also be executed but certain special properties of them are suppressed. The -p flag causes a default path to be searched instead of that in $path. With the -v flag, command is similar to whence and with -V, it is equivalent to whence -v.
See also the section 'Precommand Modifiers'.
% type command
command is a shell builtin
https://linux.die.net/man/1/zshbuiltins
command [ -pvV ] simple command
The simple command argument is taken as an external command instead of a function or builtin and is executed. If the POSIX_BUILTINS option is set, builtins will also be executed but certain special properties of them are suppressed. The -p flag causes a default path to be searched instead of that in $path. With the -v flag, command is similar to whence and with -V, it is equivalent to whence -v.
See also the section 'Precommand Modifiers'.
2020/09/10(木) 04:00:38.67ID:MVNZ6OMc
zshにしたら今まで使ってたbashがぶっ壊れることって結構ありますか?
2020/09/10(木) 05:24:13.89ID:krA4WMn4
bashがぶっ壊れるって何?
両方入れるだけでしょ?
bash消してzsh入れるっていうのならぶっ壊れる可能性が高い
もしくは最初からbashが入ってない(必要ない)システムを使うとかね
例えばdashを採用しているdebian/ubuntuとか
そういうシステムでもdashを消してzshにしたらぶっ壊れる
zshをPOSIXモードで実行すればワンチャンあるかもしれんけど
両方入れるだけでしょ?
bash消してzsh入れるっていうのならぶっ壊れる可能性が高い
もしくは最初からbashが入ってない(必要ない)システムを使うとかね
例えばdashを採用しているdebian/ubuntuとか
そういうシステムでもdashを消してzshにしたらぶっ壊れる
zshをPOSIXモードで実行すればワンチャンあるかもしれんけど
2020/09/10(木) 08:23:53.97ID:gaq4bikN
bash用スクリプトはzshで動かすことを考えて作っていない限り動かない
sh用スクリプトであってもzshでは動かない可能性がある
sh用スクリプトであってもzshでは動かない可能性がある
2020/09/10(木) 09:30:12.19ID:KfHzrxU8
カタリナにしてからmacのターミナル起動するたびに出てくる
`chsh -s /bin/zsh`って実行したらbash使えなくなるよね?
`chsh -s /bin/zsh`って実行したらbash使えなくなるよね?
79デフォルトの名無しさん
2020/09/10(木) 13:51:29.36ID:a+RPoaYl >>73
zshを基準に見ているからそうなる。
zshを基準に見ているからそうなる。
80デフォルトの名無しさん
2020/09/10(木) 13:53:05.81ID:a+RPoaYl シェルとコマンドの関係はOS依存たぞ
2020/09/10(木) 14:42:26.26ID:aa4WTOXX
2020/09/10(木) 14:47:37.11ID:aa4WTOXX
>>78
ならない。
macは最初からbashとzshの両方がインストールされてる。容量の無駄遣い
macOSでbashは/bin/shとして使われてる。Debianで使われてるdashよりも重い
最新のbashは5系だがmacOSの/bin/shのbashは3系で古い。
ライセンスのせいで新しいbashにアップデートできない
しかしPOSIX準拠のdashにしようと思っても
bash依存してるスクリプトがあって互換性の問題が出るからdashにもできない
つまりmacOSの/bin/shはPOSIX準拠のdashでもない上に
古いbashという中途半端な状態
ならない。
macは最初からbashとzshの両方がインストールされてる。容量の無駄遣い
macOSでbashは/bin/shとして使われてる。Debianで使われてるdashよりも重い
最新のbashは5系だがmacOSの/bin/shのbashは3系で古い。
ライセンスのせいで新しいbashにアップデートできない
しかしPOSIX準拠のdashにしようと思っても
bash依存してるスクリプトがあって互換性の問題が出るからdashにもできない
つまりmacOSの/bin/shはPOSIX準拠のdashでもない上に
古いbashという中途半端な状態
2020/09/10(木) 14:49:08.50ID:aa4WTOXX
>>77
> `chsh -s /bin/zsh`って実行したらbash使えなくなるよね?
さっさと実行しろ。どうせシェルスクリプトの類はbashで動く
明示的にしていて無い限りmacOSでは古いbashでスクリプトを動かすことになる
最新のbashの機能も使えない
> `chsh -s /bin/zsh`って実行したらbash使えなくなるよね?
さっさと実行しろ。どうせシェルスクリプトの類はbashで動く
明示的にしていて無い限りmacOSでは古いbashでスクリプトを動かすことになる
最新のbashの機能も使えない
84デフォルトの名無しさん
2020/09/10(木) 15:45:56.05ID:uhPbYbU6 >>81
コマンドについてはデフォルトのシェル用に作られたものを、別のシェルでは動きを変えて対応している。
だから同じ名前のシェルでもOSが異なれば、動きが変わる。
Linuxのshはbashがsh風に動かしているだけで、いろんなところがshではない。
コマンドについてはデフォルトのシェル用に作られたものを、別のシェルでは動きを変えて対応している。
だから同じ名前のシェルでもOSが異なれば、動きが変わる。
Linuxのshはbashがsh風に動かしているだけで、いろんなところがshではない。
2020/09/10(木) 16:58:53.57ID:aa4WTOXX
86デフォルトの名無しさん
2020/09/10(木) 18:11:40.04ID:uhPbYbU6 >>85
UNIXは体系的に作られたものではないということ。
それぞれが他人によって作られ、それらを統合しているため、一貫性がないのが普通。
細かい規格も存在していないので、コマンド、スクリプトは環境に依存する。
UNIXは体系的に作られたものではないということ。
それぞれが他人によって作られ、それらを統合しているため、一貫性がないのが普通。
細かい規格も存在していないので、コマンド、スクリプトは環境に依存する。
2020/09/10(木) 18:21:46.36ID:aa4WTOXX
>>86
だからそれが何の関係があるの?
だからそれが何の関係があるの?
2020/09/10(木) 19:21:59.58ID:aD+veWb6
2020/09/10(木) 19:37:41.08ID:pjCowNAw
なんでだろう?→疑問に思うな!
思考停止か
思考停止か
2020/09/10(木) 22:48:02.68ID:QyeHeLUF
>>86 って言ってるのに、疑問に思うな思考停止とか読めないやつなんだろな
91デフォルトの名無しさん
2020/09/10(木) 23:37:28.48ID:a+RPoaYl そもそもUNIXは、たまたまこうなったんじゃなくて、合理的な理由があるんだけど、なんでそれを知ろうとしないの?
UNIXはこういう思想で物を作ってますと宣言してるのに。
UNIXはこういう思想で物を作ってますと宣言してるのに。
2020/09/11(金) 01:22:31.38ID:hZ3Ldf5L
いやー、たまたまやろ。
根っこにポリシーはあっても、それ以外はかなりのいきあたりばったり。
根っこにポリシーはあっても、それ以外はかなりのいきあたりばったり。
2020/09/11(金) 03:59:13.43ID:d1DTUP2t
>>92
それな。"$1" みたいにダブルクォートでくくらないといけないのは
明らかな仕様の失敗だって言われてるし
他の言語と同じようにPOSIXシェル以前やBourneシェル以前との
互換性をある程度保ちながら改良を続けてきた
必ずしも合理的な理由があるわけじゃないよ。作者がたまたま必要だった
必要と思いつかなかった。それだけだろ
それな。"$1" みたいにダブルクォートでくくらないといけないのは
明らかな仕様の失敗だって言われてるし
他の言語と同じようにPOSIXシェル以前やBourneシェル以前との
互換性をある程度保ちながら改良を続けてきた
必ずしも合理的な理由があるわけじゃないよ。作者がたまたま必要だった
必要と思いつかなかった。それだけだろ
2020/09/11(金) 08:15:02.44ID:xA9OFzcD
2020/09/11(金) 08:49:14.16ID:5RqPMo1H
96デフォルトの名無しさん
2020/09/11(金) 11:23:25.35ID:oZv/fWa7 ぬるぽ
2020/09/11(金) 11:48:58.51ID:+wXdjlpn
>>94
あるというか、そうしなければならない場合も。
引数がなかったときに、クォートされてると、空文字列になってしまうので、意味が変わる。
make $1
みたいなスクリプトだとクォートしてはいけない。
あるというか、そうしなければならない場合も。
引数がなかったときに、クォートされてると、空文字列になってしまうので、意味が変わる。
make $1
みたいなスクリプトだとクォートしてはいけない。
2020/09/11(金) 13:38:53.46ID:2ygR8GWv
>>97もクォートしないと駄目。嘘を教えるな
2020/09/11(金) 13:45:46.53ID:GM+a9m1V
100デフォルトの名無しさん
2020/09/11(金) 14:05:53.38ID:2ygR8GWv101デフォルトの名無しさん
2020/09/11(金) 14:32:38.68ID:GM+a9m1V >>100
じゃあ引数がないときは?
じゃあ引数がないときは?
102デフォルトの名無しさん
2020/09/11(金) 14:36:02.66ID:FL1BL0eE103デフォルトの名無しさん
2020/09/11(金) 15:18:28.07ID:GM+a9m1V104デフォルトの名無しさん
2020/09/11(金) 15:22:36.50ID:ClWA61Ey105デフォルトの名無しさん
2020/09/11(金) 17:22:23.47ID:GM+a9m1V >>104
勝手に-uをベストに決めつけんな。クズ。
オプションは使うべきときに使え。クズ。
makeみたいな、引数の有無で挙動が変わるコマンドがあって、考えなしに変数をクォートすりゃあいいってもんじゃない、って話をしてんだよ。クズ。
勝手に-uをベストに決めつけんな。クズ。
オプションは使うべきときに使え。クズ。
makeみたいな、引数の有無で挙動が変わるコマンドがあって、考えなしに変数をクォートすりゃあいいってもんじゃない、って話をしてんだよ。クズ。
106デフォルトの名無しさん
2020/09/11(金) 17:26:30.94ID:rpshaWn6 考えなしにクォートしなかったから
バグが増え危険なコードになってんだろが
バグが増え危険なコードになってんだろが
107デフォルトの名無しさん
2020/09/11(金) 17:39:34.54ID:cQZtEKri ガッ
108デフォルトの名無しさん
2020/09/11(金) 17:48:50.71ID:oZv/fWa7 make組のスクツか
109デフォルトの名無しさん
2020/09/11(金) 17:53:09.84ID:JEMEP9MD ガッ
なコード書きたいただの甘えん坊だな ID:GM+a9m1V は
なコード書きたいただの甘えん坊だな ID:GM+a9m1V は
110デフォルトの名無しさん
2020/09/11(金) 18:41:08.82ID:GM+a9m1V >>108
lsでも同じ。
lsでも同じ。
111デフォルトの名無しさん
2020/09/11(金) 19:09:02.73ID:JEMEP9MD シェルスクリプト書くうえで、
command
command arg
どちらも(前にチェック無しで)書きたいなんてほとんどないだろうに。ほとんどないのはあげつらってるのはお前だけという点で明らかだな
ls で言えば
ls target
ls
結果が違うんだから目的も違う
ls ''
でエラーになる方が大体の目的にあっているだろうにとしか思えない
command
command arg
どちらも(前にチェック無しで)書きたいなんてほとんどないだろうに。ほとんどないのはあげつらってるのはお前だけという点で明らかだな
ls で言えば
ls target
ls
結果が違うんだから目的も違う
ls ''
でエラーになる方が大体の目的にあっているだろうにとしか思えない
112デフォルトの名無しさん
2020/09/11(金) 21:09:13.16ID:GJYer3nV >>92
だから、そう説明してるんだよ。わざわざ作り直したり、同じようなものを作らないのがUNIXの考え方。
だから、そう説明してるんだよ。わざわざ作り直したり、同じようなものを作らないのがUNIXの考え方。
113デフォルトの名無しさん
2020/09/11(金) 21:25:03.10ID:GM+a9m1V114デフォルトの名無しさん
2020/09/11(金) 21:30:01.59ID:xA9OFzcD そこでPlan 9 rcですよ。
引用符の種類が一つしかない。
そしてクソほど使いにくいw
引用符の種類が一つしかない。
そしてクソほど使いにくいw
115デフォルトの名無しさん
2020/09/11(金) 22:09:45.47ID:JEMEP9MD >>113
文盲と他人をあげつらってるくせにの文盲はお前じゃ
>クォートしないことにも意義がある
誰も意義がないなんて言ってないだろが
発端は
>それな。"$1" みたいにダブルクォートでくくらないといけないのは
>明らかな仕様の失敗だって言われてるし
だからな。その流れ中にクォートありだけをあげつらっている(?)のは、クォートしないことにも意義があるじゃなく読まれてもしょうがないな
文盲と他人をあげつらってるくせにの文盲はお前じゃ
>クォートしないことにも意義がある
誰も意義がないなんて言ってないだろが
発端は
>それな。"$1" みたいにダブルクォートでくくらないといけないのは
>明らかな仕様の失敗だって言われてるし
だからな。その流れ中にクォートありだけをあげつらっている(?)のは、クォートしないことにも意義があるじゃなく読まれてもしょうがないな
116デフォルトの名無しさん
2020/09/11(金) 22:26:19.12ID:JEMEP9MD 失敗だって言われてるってその例では「全く」wピンと来ないが、
今時名前の中にスペースが入っているの当たり前で、ほぼ必ずダブルクォートで囲まなければならないのがメンドくさいのは確かだな
逆(単にダブルクォート有無の動作が逆ではなく、ダブルクォート無しでもダブルクォート有りの動作、IFSで分かつなら別の表現)っていうのならわかるが、失敗というほどでもねえなとも思われる
多分、伝わってないのは、そういうことだよw
今時名前の中にスペースが入っているの当たり前で、ほぼ必ずダブルクォートで囲まなければならないのがメンドくさいのは確かだな
逆(単にダブルクォート有無の動作が逆ではなく、ダブルクォート無しでもダブルクォート有りの動作、IFSで分かつなら別の表現)っていうのならわかるが、失敗というほどでもねえなとも思われる
多分、伝わってないのは、そういうことだよw
117デフォルトの名無しさん
2020/09/11(金) 22:45:29.66ID:GM+a9m1V118デフォルトの名無しさん
2020/09/11(金) 22:54:33.23ID:JEMEP9MD119デフォルトの名無しさん
2020/09/12(土) 00:02:20.83ID:8+3Td7f1 $1と書いてるのに$1がないとみなされるのは
利点ではなく欠点
利点ではなく欠点
120デフォルトの名無しさん
2020/09/12(土) 01:27:02.50ID:cIbo/3Vm121デフォルトの名無しさん
2020/09/12(土) 01:28:06.18ID:cIbo/3Vm >>118
いや、あきらかに文盲であることがはっきりした。w
いや、あきらかに文盲であることがはっきりした。w
122デフォルトの名無しさん
2020/09/12(土) 01:28:55.85ID:Q/cMHo3Y123デフォルトの名無しさん
2020/09/12(土) 01:51:34.41ID:lVvt6egL >>121
流れに関係なく、俺の突然言い出したことを理解できないのは文盲というのなら、お前から見たら文盲なんだろな
文盲という意味(厳密な意味じゃない)を理解してないアレだと俺は思うけどな
っていうことで明らかに終わりだな、その投げやり言い放ちだけのレスでw
流れに関係なく、俺の突然言い出したことを理解できないのは文盲というのなら、お前から見たら文盲なんだろな
文盲という意味(厳密な意味じゃない)を理解してないアレだと俺は思うけどな
っていうことで明らかに終わりだな、その投げやり言い放ちだけのレスでw
124デフォルトの名無しさん
2020/09/12(土) 03:31:42.22ID:d3hRbJnw 仮にお前が賢い人間だとするじゃん
仮に相手が馬鹿な人間だとするじゃん
その場合だと争いにならないわけだから争いになってるということはその過程は合っていなかったわけだね
つまり
お前らは馬鹿だってことさ
仮に相手が馬鹿な人間だとするじゃん
その場合だと争いにならないわけだから争いになってるということはその過程は合っていなかったわけだね
つまり
お前らは馬鹿だってことさ
125デフォルトの名無しさん
2020/09/12(土) 04:17:42.56ID:wMTnI8uy >>122
コードをどう解釈するのかはシェル内部の仕様。
変数名を文字列として指定し、文字列で指定された変数の値を参照する仕組みもシェルの仕様。
これは結果的にわかりにくい表現、使ううえで間違いやすい仕様として認識されている。
UNIXはたいしたことない欠点をあとから変更する文化はない。
マイクロソフトのように次から次へ新しいものを作っては捨て、作っては捨てということはしない。
コードをどう解釈するのかはシェル内部の仕様。
変数名を文字列として指定し、文字列で指定された変数の値を参照する仕組みもシェルの仕様。
これは結果的にわかりにくい表現、使ううえで間違いやすい仕様として認識されている。
UNIXはたいしたことない欠点をあとから変更する文化はない。
マイクロソフトのように次から次へ新しいものを作っては捨て、作っては捨てということはしない。
126デフォルトの名無しさん
2020/09/12(土) 05:24:39.89ID:Q/cMHo3Y 単に互換性のために修正できないだけ
欠点は欠点。修正できない可哀想
だからPOSIXに新しい言語も追加できない
欠点は欠点。修正できない可哀想
だからPOSIXに新しい言語も追加できない
127デフォルトの名無しさん
2020/09/12(土) 05:39:35.64ID:Q/cMHo3Y > 変数名を文字列として指定し、文字列で指定された変数の値を参照する仕組み
ウソ
ウソ
128デフォルトの名無しさん
2020/09/12(土) 05:49:23.00ID:UoolulYH 行為主体(発言主体)の意思ではなく事柄の客観的事実に言及したいのであれば、「ウソ」ではなく「間違い」「事実ではない」といった言葉を用いるべし
129デフォルトの名無しさん
2020/09/12(土) 05:49:59.50ID:Q/cMHo3Y わかってていってるからウソだろう
130デフォルトの名無しさん
2020/09/12(土) 06:29:49.25ID:UoolulYH だろうおじさんでしたか...
131デフォルトの名無しさん
2020/09/12(土) 07:07:17.20ID:uZ7XE8wK 本人が否定しなければウソだということ
132デフォルトの名無しさん
2020/09/12(土) 13:09:24.18ID:wMTnI8uy >>126
そうね。でもそれで大成功をおさめているのがUNIX系。もうすべてがUNIXになりつつある。WindowsのUNIX化もとまらない。
そもそもシェルスクリプトに不満があるのなら、別のスクリプト言語を使えばいい。
そうね。でもそれで大成功をおさめているのがUNIX系。もうすべてがUNIXになりつつある。WindowsのUNIX化もとまらない。
そもそもシェルスクリプトに不満があるのなら、別のスクリプト言語を使えばいい。
133デフォルトの名無しさん
2020/09/12(土) 13:09:48.29ID:65NtGZ7l 仕事でシェルスクリプトを触りはじめたけどすぐに地雷を踏む
134デフォルトの名無しさん
2020/09/12(土) 13:23:20.82ID:6ll5lvdV macのローカルで作ったシェルをLinuxで動かしたら悲しいことになった
135デフォルトの名無しさん
2020/09/12(土) 14:00:32.63ID:Py28fth2 >>132
> そもそもシェルスクリプトに不満があるのなら、別のスクリプト言語を使えばいい。
/bin/shが他のスクリプト言語になることなんてあるんか?
最小構成で他のスクリプト言語が含まれることなんかあるんか?
POSIXが改定して別のスクリプト言語が使えるようになることなんてあるんか?
現実的にありえない話をしても意味がない
> そもそもシェルスクリプトに不満があるのなら、別のスクリプト言語を使えばいい。
/bin/shが他のスクリプト言語になることなんてあるんか?
最小構成で他のスクリプト言語が含まれることなんかあるんか?
POSIXが改定して別のスクリプト言語が使えるようになることなんてあるんか?
現実的にありえない話をしても意味がない
136デフォルトの名無しさん
2020/09/12(土) 14:01:12.85ID:Py28fth2137デフォルトの名無しさん
2020/09/12(土) 14:34:38.84ID:tj7slUn6 >>133
例えば?
例えば?
138デフォルトの名無しさん
2020/09/12(土) 14:58:47.65ID:cIbo/3Vm139デフォルトの名無しさん
2020/09/12(土) 15:02:55.76ID:WICsaeqa 自分が無知なのをごまかすためにわなと言ってる
140デフォルトの名無しさん
2020/09/12(土) 15:05:52.91ID:cIbo/3Vm141デフォルトの名無しさん
2020/09/12(土) 15:52:04.79ID:WICsaeqa 自分は良くても他人のイメージを使うときに困るだろ
posh?好きなら自分でイントールしてろw
posh?好きなら自分でイントールしてろw
142デフォルトの名無しさん
2020/09/12(土) 15:58:40.31ID:WICsaeqa >>140
そのposhとかいうのをmacにインストールしたんだが
$ cd /
posh: cd: too many arguments
で動かないんだがwww
こんなバグソフト普及するわけねーだろwww
そのposhとかいうのをmacにインストールしたんだが
$ cd /
posh: cd: too many arguments
で動かないんだがwww
こんなバグソフト普及するわけねーだろwww
143デフォルトの名無しさん
2020/09/12(土) 16:01:00.14ID:WICsaeqa poshを終了しようとして
$ exit
posh: exit: bad number
www
$ exit
posh: exit: bad number
www
144デフォルトの名無しさん
2020/09/12(土) 17:12:01.89ID:cIbo/3Vm145デフォルトの名無しさん
2020/09/12(土) 17:14:06.13ID:l+/2U9kY https://hoge1http://hoge2https://hoge3
を
https://hoge1
http://hoge2
https://hoge3
にしようと、sedやperlワンライナーで頑張ってみたけど
https://hoge1http://hoge2
https://hoge3
にしかならないです
どうやればできますか?
を
https://hoge1
http://hoge2
https://hoge3
にしようと、sedやperlワンライナーで頑張ってみたけど
https://hoge1http://hoge2
https://hoge3
にしかならないです
どうやればできますか?
146デフォルトの名無しさん
2020/09/12(土) 17:37:28.98ID:lYGfHMY4 >>144
全て同じではないから/bin/shはdashかbashしかありえない
全て同じではないから/bin/shはdashかbashしかありえない
147デフォルトの名無しさん
2020/09/12(土) 17:39:17.54ID:bxqUAjH/ PS > "https://hoge1http://hoge2https://hoge3" -split "http"| %{if($_ -ne ""){"http" + $_}}
https://hoge1
http://hoge2
https://hoge3
https://hoge1
http://hoge2
https://hoge3
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】J2第38節 水戸がJ2初優勝!長崎は2位でJ1自動昇格!千葉は大量得点もPOへ [久太郎★]
- アミューズが同性婚訴訟への声明を発表「誰もが良く生きられる自由」を目指す、東京高裁の判決を受け [muffin★]
- 【イオン】中国湖南省に新大型店を開業 混乱なく地元客でにぎわい モール内にユニクロや無印良品★2 [1ゲットロボ★]
- 【公明党】派遣型風俗店の女性の裸をスマホで盗撮か 徳島県議会議員の古川広志容疑者逮捕 警視庁 [nita★]
- 「まだ朝7時に通勤してるんですか?」にじさんじVTuberがXの投稿で炎上、YouTubeで釈明と謝罪 [muffin★]
- 日本のアニソン歌唱中に強制中断 上海、照明落とされ音楽止まる [蚤の市★]
- 【衝撃】JSが遊んでるゲームランキングがコチラ wwwwwwwwwwwさwwwwwwwwwwwwwwwwwwwwwwwwwwww
- 鈴木農相「お米券でパスタやお菓子も買えるようにします☺」・・・???😰 [931948549]
- 鈴蘭台来た。やること教えろ [535650357]
- ふなっしょい🍬なのらああああああwww🏡
- 【悲報】日本の若者たち、オーストラリアで「最下層の出稼ぎ労働者」として韓国人やマレーシア人の下でこき使われていた [329271814]
- 黒人のフリーレン(Black frieren)、ミーム化するwwwwwwwwwwwwwwwwwww [329329848]
