シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
シェルスクリプト総合 その31
https://mevius.5ch.net/test/read.cgi/tech/1565446670/
シェルスクリプト総合 その32
■ このスレッドは過去ログ倉庫に格納されています
2019/10/25(金) 00:08:45.53ID:6btPTvif
778デフォルトの名無しさん
2020/03/06(金) 15:44:20.26ID:el16gBAN Rubyの人に質問するけど
Rubyでは引数処理に便利な機能って標準で提供されてるの?
Rubyでは引数処理に便利な機能って標準で提供されてるの?
779デフォルトの名無しさん
2020/03/06(金) 16:18:48.95ID:dB1opsgL すでに書かれてるだろ。自演か?w
興味あるならあれが標準かとか具体的なのは自分で調べろよ、もしくはRubyスレでだな
興味あるならあれが標準かとか具体的なのは自分で調べろよ、もしくはRubyスレでだな
780デフォルトの名無しさん
2020/03/06(金) 23:22:42.71ID:VrRz91DJ >>779
Rubyのヒトは会話を装う自演なんて高等なことはできないぞw
Rubyのヒトは会話を装う自演なんて高等なことはできないぞw
781デフォルトの名無しさん
2020/03/06(金) 23:52:31.10ID:uvQVOrPP ようやくbashに慣れてきたけど最低限覚えとけって言語はなんだろうか
頻繁に使うのはsed・awk・grep程度なんでやるならperlの方がいいのかね
今後のためにpythonをと言われても素人に使う機会ないわ
頻繁に使うのはsed・awk・grep程度なんでやるならperlの方がいいのかね
今後のためにpythonをと言われても素人に使う機会ないわ
782デフォルトの名無しさん
2020/03/06(金) 23:59:29.67ID:dfpAZ0dm783デフォルトの名無しさん
2020/03/07(土) 00:00:23.26ID:z518jRtl >>778
ARGV, ARGFが組み込み、OptionParserが標準添付ライブラリで提供されてる
ARGVは配列に引数が入ってるやつでだいだいどの言語にもあるやつ
ARGV[0]が実行コマンドじゃなく1つ目の引数になってるのが微妙に使いやすい
ARGFは引数でファイル名を受け取る場合と
標準入力でファイルを受け取る場合を1つの処理で書ける便利なやつ
Ruby以外では見たことない
OptionParserはショートオプション/ロングオプション/サブコマンドとかをサポートしてて
getoptやgetoptsに比べれば書きやすいし便利ではある
ただもっと高機能なgemもあるので依存性とのトレードオフでライブラリを選ぶ感じ
総じて簡単には書けるんだけどPerlなんかに比べるとインタプリタの起動が超遅いから
コマンド叩いてから処理が終わるまでの時間が比較的長い場合にしか使わない
ARGV, ARGFが組み込み、OptionParserが標準添付ライブラリで提供されてる
ARGVは配列に引数が入ってるやつでだいだいどの言語にもあるやつ
ARGV[0]が実行コマンドじゃなく1つ目の引数になってるのが微妙に使いやすい
ARGFは引数でファイル名を受け取る場合と
標準入力でファイルを受け取る場合を1つの処理で書ける便利なやつ
Ruby以外では見たことない
OptionParserはショートオプション/ロングオプション/サブコマンドとかをサポートしてて
getoptやgetoptsに比べれば書きやすいし便利ではある
ただもっと高機能なgemもあるので依存性とのトレードオフでライブラリを選ぶ感じ
総じて簡単には書けるんだけどPerlなんかに比べるとインタプリタの起動が超遅いから
コマンド叩いてから処理が終わるまでの時間が比較的長い場合にしか使わない
784デフォルトの名無しさん
2020/03/07(土) 10:41:41.36ID:EQxW6/Yc >>780
どうだろう?w
どうだろう?w
785デフォルトの名無しさん
2020/03/07(土) 13:57:14.80ID:wqSODED6 if文でディレクトリの権限を確認するにはどうしたらいいですか?
-wをやってみたのですがうまく動作してくれません。
ファイルにしか使えないのですかね?
-wをやってみたのですがうまく動作してくれません。
ファイルにしか使えないのですかね?
786デフォルトの名無しさん
2020/03/07(土) 19:03:29.05ID:Tac4Jm8B rootだからじゃね?いちおう対象がディレクトリも-wで書き込みの可否は返してるけど
787デフォルトの名無しさん
2020/03/07(土) 22:08:31.10ID:wqSODED6 >>786
動作としては書き込み権限の有無を確認し、無ければ付与するという動作が作りたかったです。
いろいろ調べたところrootだとパーミッションを無視するらしいので、
if [ ! -w ディレクトリ ]
上記の記載をしているスクリプトの実行ユーザがrootの為、全てにおいて書き込み権限があると認識されてしまっていると考えられます。
動作としては書き込み権限の有無を確認し、無ければ付与するという動作が作りたかったです。
いろいろ調べたところrootだとパーミッションを無視するらしいので、
if [ ! -w ディレクトリ ]
上記の記載をしているスクリプトの実行ユーザがrootの為、全てにおいて書き込み権限があると認識されてしまっていると考えられます。
788デフォルトの名無しさん
2020/03/07(土) 23:54:32.58ID:hanAtv/p 「chmod ディレクトリ」で検索!
789デフォルトの名無しさん
2020/03/08(日) 00:08:43.59ID:rfEr1WGY >>788
chmodでディレクトリの権限を000にしても可能でしたが…
chmodでディレクトリの権限を000にしても可能でしたが…
790デフォルトの名無しさん
2020/03/08(日) 00:50:11.68ID:TYqtbVyi パーミッションチェックじゃなくて書き込みができるか?だったはず
791デフォルトの名無しさん
2020/03/08(日) 02:47:35.54ID:rfEr1WGY >>790
そうなのですね。
それであれば、000にしてもrootは書き込み可能だから毎回書き込み権限が付与されないは正しい挙動ですね。
実行ユーザーを一般ユーザーに変えるか、lsの結果にwの文字があるかを判別する処理に変えるが対処法になりそうですね。
そうなのですね。
それであれば、000にしてもrootは書き込み可能だから毎回書き込み権限が付与されないは正しい挙動ですね。
実行ユーザーを一般ユーザーに変えるか、lsの結果にwの文字があるかを判別する処理に変えるが対処法になりそうですね。
792デフォルトの名無しさん
2020/03/08(日) 03:12:50.23ID:P20sq25k >>791
そう、思い出した。ファイルのパーミッションを自分から読み書きできないように変更して
本当に読み書きできないか、-wや-rでチェックするコードを書いたら、rootの場合は
それが上手くいかなかった。だからrootではそのチェックをしないようにした。
そう、思い出した。ファイルのパーミッションを自分から読み書きできないように変更して
本当に読み書きできないか、-wや-rでチェックするコードを書いたら、rootの場合は
それが上手くいかなかった。だからrootではそのチェックをしないようにした。
793デフォルトの名無しさん
2020/03/08(日) 05:16:19.40ID:Xv2JcybJ rootの場合でも対象に書き込めるんだから真っ当な動作だわな
794デフォルトの名無しさん
2020/03/08(日) 12:36:43.71ID:uLLaNXsz rootが「一見書き込めない」ファイルは存在しうるけど
「書き込む許可をどうしても得られない」ファイルはシステムの不具合でもない限り存在しないからね。
じゃなきゃそのファイルを誰が処理するのかって話になる。
UID 0は自分が持ち上げられない岩は作れないのだ。
「書き込む許可をどうしても得られない」ファイルはシステムの不具合でもない限り存在しないからね。
じゃなきゃそのファイルを誰が処理するのかって話になる。
UID 0は自分が持ち上げられない岩は作れないのだ。
795デフォルトの名無しさん
2020/03/08(日) 19:11:47.52ID:RzwfZ5D7 Read onlyでマウントしたのはボリュームはrootでも書き込めないよね。そもそも書き込めないメディアも
あくまでも-wは書き込めるかの判定だから使う側が勘違いしてるだけで判定としてはrootでも全く正常な動き
あくまでも-wは書き込めるかの判定だから使う側が勘違いしてるだけで判定としてはrootでも全く正常な動き
796デフォルトの名無しさん
2020/03/08(日) 19:58:45.91ID:T8rZAzyK cd -Lの-Lってデフォルト?
797デフォルトの名無しさん
2020/03/08(日) 20:25:40.77ID:kizyo8RY デファクトでデフォルト
798デフォルトの名無しさん
2020/03/08(日) 22:45:41.68ID:rfEr1WGY >>795
スクリプトを一般ユーザーで実行した際に書き込み権限があるかを判別するって認識でいいんですかね?
rootだと基本全部書き込めるから、一般ユーザーくらいでしか機能しない処理のような気がします。
スクリプトを一般ユーザーで実行した際に書き込み権限があるかを判別するって認識でいいんですかね?
rootだと基本全部書き込めるから、一般ユーザーくらいでしか機能しない処理のような気がします。
799デフォルトの名無しさん
2020/03/08(日) 23:08:52.65ID:5CM70Uar 単に現在(のユーザで)書き込めるかどうか判別してるにすぎないざね。権限とかは置いておいて。書き込める=書き込める権限と言うのならそうかもしれんが
ちなみに、macOSだとロックというのがあり、ロックするとrootでも書き込めないよう
権限とかではなくて単に書き込めるかどうかだな。Read onlyでrootで書き込めないのもそうだし
権限を調べたいならrootではなくてだろうね。もしくは詳しく権限を調べるとか
ちなみに、macOSだとロックというのがあり、ロックするとrootでも書き込めないよう
権限とかではなくて単に書き込めるかどうかだな。Read onlyでrootで書き込めないのもそうだし
権限を調べたいならrootではなくてだろうね。もしくは詳しく権限を調べるとか
800デフォルトの名無しさん
2020/03/09(月) 01:15:25.69ID:EmgiRGOf >ちなみに、macOSだと〜
macOSというかBSDだな。FreeBSD/OpenBSDにもあった、そして挙動が同じ
macOSというかBSDだな。FreeBSD/OpenBSDにもあった、そして挙動が同じ
801デフォルトの名無しさん
2020/03/09(月) 08:15:32.71ID:nSyyVcXg802デフォルトの名無しさん
2020/03/09(月) 15:04:18.04ID:rWRx//dL PWDってさ、スクリプト実行前に設定されるって思う?
803デフォルトの名無しさん
2020/03/09(月) 15:50:41.07ID:sbrbbxpE されてないシェルなんてあったらそのシェルのバグだろう
804デフォルトの名無しさん
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.
まんまなのか(?)
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.
まんまなのか(?)
805デフォルトの名無しさん
2020/03/09(月) 16:26:06.84ID:sbrbbxpE いや、スクリプトファイルの実行時にならされる、-c のコマンド羅列文字列の実行時にはされないかな?
806デフォルトの名無しさん
2020/03/09(月) 18:07:49.62ID:bHKN7jy6 どのシェルも設定されるなーって思ってたらkshはされんかった
export $PWD=aaaってやって
ksh -c 'echo $PWD'したらaaaってでた
export $PWD=aaaってやって
ksh -c 'echo $PWD'したらaaaってでた
807デフォルトの名無しさん
2020/03/09(月) 18:10:56.70ID:bHKN7jy6 -cだけじゃなくてksh a.shってやってもaaaってでたw
最初、echo $PWDの前に確認のためにpwdコマンドやっていて気づかんかった
kshだとpwdやったらPWDも設定されたw
最初、echo $PWDの前に確認のためにpwdコマンドやっていて気づかんかった
kshだとpwdやったらPWDも設定されたw
808デフォルトの名無しさん
2020/03/09(月) 18:14:17.37ID:bHKN7jy6 おぉ? kshだとcd .してもPWDは設定されんかったぞw
流石に別ディレクトリに移動したら設定されるが
流石に別ディレクトリに移動したら設定されるが
809デフォルトの名無しさん
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+
kshも設定されない?(??)
export HOGE=hoge
export PWD=hage
ksh -c 'echo $PWD $HOGE'
ってやったら、(pwdの) hoge かな。バージョン違いかな? うちのは 93u+
810デフォルトの名無しさん
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+
export PWD=aaaってやって以下のスクリプトを実行したら
echo $PWD # aaa
echo $(echo $PWD) # /home/ore
echo $PWD # /home/ore
ってなった。
どこで設定してるんだよwww
kshは93u+
811デフォルトの名無しさん
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
どういうテストなのかわからんけど、93u+ ではこんなん
$ cd /home
$ echo $PWD
/home
$ PWD=hoge
$ echo $PWD
hoge
$ pwd
/home
$ echo $PWD
hoge
$ cd .
$ echo $PWD
/home
812デフォルトの名無しさん
2020/03/09(月) 18:40:35.23ID:bHKN7jy6 echo実行後にせってされてるのでは?と思う人のために
echo $PWD # aaa
echo $PWD # aaa
echo $(echo $PWD) # /home/ore
echo $PWD # /home/ore
echo $PWD # aaa
echo $PWD # aaa
echo $(echo $PWD) # /home/ore
echo $PWD # /home/ore
813デフォルトの名無しさん
2020/03/09(月) 18:41:47.16ID:6JwbfpR0 >>810
同じか。ナゾだなw
同じか。ナゾだなw
814デフォルトの名無しさん
2020/03/09(月) 18:42:40.76ID:bHKN7jy6815デフォルトの名無しさん
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
:
echo $PWD # aaa
-----
echo $PWD # aaa
$()
echo $PWD # aaa
-----
echo $PWD # aaa
$(:)
echo $PWD # /home/ore
サブシェルに入ってから?なんか実行すると設定されるっぽいw
816デフォルトの名無しさん
2020/03/09(月) 18:46:18.77ID:6JwbfpR0 $ ksh -c 'PWD=hoge;echo $PWD;cd .;echo $PWD'
でも、
hoge
/home
かな
でも、
hoge
/home
かな
817デフォルトの名無しさん
2020/03/09(月) 18:48:20.68ID:bHKN7jy6 つまりkshで安全に$PWDを使うためには
最初の方で$(:)を実行しておけってことだなw
これが最速の方法か知らんけど、pwd > /dev/null よりかは速そう。いやどっちだろ?
最初の方で$(:)を実行しておけってことだなw
これが最速の方法か知らんけど、pwd > /dev/null よりかは速そう。いやどっちだろ?
818デフォルトの名無しさん
2020/03/09(月) 18:50:28.04ID:bHKN7jy6 bashでログインして、cd /homeして
ksh -c 'PWD=hoge;echo $PWD;cd .;echo $PWD' を実行すると
hoge
/home
ってでる
export PWD=hoge
ksh -c 'PWD=hoge;echo $PWD;cd .;echo $PWD' を実行すると
hoge
hoge
ってでる
ksh -c 'PWD=hoge;echo $PWD;cd .;echo $PWD' を実行すると
hoge
/home
ってでる
export PWD=hoge
ksh -c 'PWD=hoge;echo $PWD;cd .;echo $PWD' を実行すると
hoge
hoge
ってでる
819デフォルトの名無しさん
2020/03/09(月) 18:51:54.13ID:bHKN7jy6 ははは、ワロスワロス。どうなってるのか考えたら、頭がこんがらがってきたw
820デフォルトの名無しさん
2020/03/09(月) 18:55:32.91ID:6JwbfpR0 なるほど
PWDがexportされていたかに影響するのか、イミフだな
exportされてるされてないで、pwdでのPWDも動作違う(?)
PWDがexportされていたかに影響するのか、イミフだな
exportされてるされてないで、pwdでのPWDも動作違う(?)
821デフォルトの名無しさん
2020/03/09(月) 19:04:32.47ID:bHKN7jy6 PWDはデフォルトでexportされてるはずだから
cd /home
PWD=hoge
ksh -c 'PWD=hoge;echo $PWD;cd .;echo $PWD'
これも
hoge
hoge
cd /home
PWD=hoge
ksh -c 'PWD=hoge;echo $PWD;cd .;echo $PWD'
これも
hoge
hoge
822デフォルトの名無しさん
2020/03/09(月) 19:05:54.23ID:bHKN7jy6 ムリw バグっぽいけど、どういうバグなのか頭が働かないw
823デフォルトの名無しさん
2020/03/09(月) 19:11:00.02ID:bHKN7jy6 スクリプトの中から
さらにksh -c 'echo $PWD'してもPWDはaaaのままだたけど
(echo $PWD)するだけで/homeになるな。
つまりサブシェルを使うと、サブシェルの外のPWDの状態が変化する
さらにksh -c 'echo $PWD'してもPWDはaaaのままだたけど
(echo $PWD)するだけで/homeになるな。
つまりサブシェルを使うと、サブシェルの外のPWDの状態が変化する
824デフォルトの名無しさん
2020/03/09(月) 19:20:17.23ID:6JwbfpR0 うむ、PWDをイジるとね
>>809のも
export HOGE=hoge
export PWD=hage
ksh -c 'echo $PWD $HOGE'
を
ログインして(シェルはbash)すぐ実行だと、
/home/ore hage
ログインして(bash)、cd /home した後だと、
hage hoge
だな。まずイミフ。PWDなんてイジらない(そもそもkshを好んで使わないwそういういOSがあるらしいが知らんw)から忘れようw
>>809のも
export HOGE=hoge
export PWD=hage
ksh -c 'echo $PWD $HOGE'
を
ログインして(シェルはbash)すぐ実行だと、
/home/ore hage
ログインして(bash)、cd /home した後だと、
hage hoge
だな。まずイミフ。PWDなんてイジらない(そもそもkshを好んで使わないwそういういOSがあるらしいが知らんw)から忘れようw
825デフォルトの名無しさん
2020/03/10(火) 00:15:26.42ID:oWfapBN9 files="/Users/aaa/Documents/*"
for filepath in $files;
do
case $filepath in *.txt)
echo $filepath
esac
done
このcaseをifに置き換えた場合がうまくできません
ご指導よろしくお願いします
for filepath in $files;
do
case $filepath in *.txt)
echo $filepath
esac
done
このcaseをifに置き換えた場合がうまくできません
ご指導よろしくお願いします
826デフォルトの名無しさん
2020/03/10(火) 00:18:49.52ID:Cf5scsdy forからやり直して下さい
827デフォルトの名無しさん
2020/03/10(火) 00:20:14.51ID:QrvPekFm caseでいいやん?なんでifに置き換えるのさ。意味ない。
828デフォルトの名無しさん
2020/03/10(火) 06:34:25.94ID:fD+LS7Hr 単に拡張子を判断したいってだけじゃね。それも txt 一つだけとか。だとしたら、
if [ "${filepath##*.}" = "txt" ]; then
echo "$filepath"
fi
とかにしたくなるのもわからないでもない
if [ "${filepath##*.}" = "txt" ]; then
echo "$filepath"
fi
とかにしたくなるのもわからないでもない
829デフォルトの名無しさん
2020/03/10(火) 08:08:24.53ID:oWfapBN9830デフォルトの名無しさん
2020/03/10(火) 10:13:09.27ID:KDNpqv0e >>828
なんでそんなにifにこだわるんだろうかね
if [ "${filepath##*.}" = "txt" ]; then
case $filepath in *.txt)
if [[ $filepath = *.txt ]]; then
どれがシンプルかは比べてみれば明らかだろうに
caseはcase一つで実現しているが、ifは別途 [ または [[ を
組み合わせてるから無駄な処理を行ってるんだが
文字数も長いし、[[はbash依存
パターンマッチングをcaseからifに置き換えても
文字を長くして無駄な処理を行って動くシェルを減らしているだけで
メリットが一つもない
なんでそんなにifにこだわるんだろうかね
if [ "${filepath##*.}" = "txt" ]; then
case $filepath in *.txt)
if [[ $filepath = *.txt ]]; then
どれがシンプルかは比べてみれば明らかだろうに
caseはcase一つで実現しているが、ifは別途 [ または [[ を
組み合わせてるから無駄な処理を行ってるんだが
文字数も長いし、[[はbash依存
パターンマッチングをcaseからifに置き換えても
文字を長くして無駄な処理を行って動くシェルを減らしているだけで
メリットが一つもない
831デフォルトの名無しさん
2020/03/10(火) 16:38:10.67ID:HVuW4BfF 一つだけなのにcaseを使うのが気持ち悪い、判断パターンをcaseの後に書くのが気持ち悪いという感性の問題だな
どの感性が良い悪いというのではく。コーディング規約が一つにならないのと同じような
お前は俺のコーディング規約が絶対と言って譲らないのと同じ
どの感性が良い悪いというのではく。コーディング規約が一つにならないのと同じような
お前は俺のコーディング規約が絶対と言って譲らないのと同じ
832デフォルトの名無しさん
2020/03/10(火) 22:41:26.01ID:DGocRqod コーディング規約と漠然にいってるけどその内容には二種類あって、
一つは「理由がある良いやり方」と
もう一つは「どちらでも良いけど統一しましょう」というだけのもの
理由があるものはどちらが良いか明確に言うことができる。
明確に言えないものはインデントのスペースを2にするか4にするかという
統一だけするもの。コーディング規約にはこの二つが混じっているから、
良いか悪いかの話ができるものまで、好みの話だと勘違いしてる。
感性が邪魔して良い方法を採用することが出来ないという気持ちはわかるが
今回は明らかにcaseを使ったほうが良い。他にifの方がいい理由があれば
トレードオフの話に持っていけるが
一つは「理由がある良いやり方」と
もう一つは「どちらでも良いけど統一しましょう」というだけのもの
理由があるものはどちらが良いか明確に言うことができる。
明確に言えないものはインデントのスペースを2にするか4にするかという
統一だけするもの。コーディング規約にはこの二つが混じっているから、
良いか悪いかの話ができるものまで、好みの話だと勘違いしてる。
感性が邪魔して良い方法を採用することが出来ないという気持ちはわかるが
今回は明らかにcaseを使ったほうが良い。他にifの方がいい理由があれば
トレードオフの話に持っていけるが
833デフォルトの名無しさん
2020/03/11(水) 02:59:38.62ID:nI7VA1ob しつこい
834デフォルトの名無しさん
2020/03/11(水) 03:56:24.84ID:arwb9WsV 俺様が決めたコーディング規約に従えねぇってかごるぁ
ということを言いたいんだろうな。caseは正義なんだと。
ということを言いたいんだろうな。caseは正義なんだと。
835デフォルトの名無しさん
2020/03/11(水) 04:45:38.32ID:ZeFz9OTM 承認欲求のひとつだろな
836デフォルトの名無しさん
2020/03/11(水) 09:22:15.60ID:FWSDJbu9 >>834
コーディング規約の話なんかしてないだろ?
この場合は、caseの方が優れてるのに
ifを使いたいという"感性"を持ち出してきたアホが居るだけ
そのアホがコーディング規約がーとか意味不明なことを言ってるだけ
コーディング規約の話なんかしてないだろ?
この場合は、caseの方が優れてるのに
ifを使いたいという"感性"を持ち出してきたアホが居るだけ
そのアホがコーディング規約がーとか意味不明なことを言ってるだけ
837デフォルトの名無しさん
2020/03/11(水) 09:32:31.50ID:FWSDJbu9 この場合はcaseが優れてるね
↓
case使えって言った!こいつどんなときでもcase使えって言った!
理由はコーディング規約だからそれに従えだって!
誰もそんなこと言ってないんだよなぁ(笑)
なんで優れてるかどうかの話をすり替えたんだろうね
↓
case使えって言った!こいつどんなときでもcase使えって言った!
理由はコーディング規約だからそれに従えだって!
誰もそんなこと言ってないんだよなぁ(笑)
なんで優れてるかどうかの話をすり替えたんだろうね
838デフォルトの名無しさん
2020/03/11(水) 09:35:24.46ID:arwb9WsV839デフォルトの名無しさん
2020/03/11(水) 10:04:34.79ID:FWSDJbu9 >>838
自分がしつこいから、レスが来てるって思わない?w
自分がしつこいから、レスが来てるって思わない?w
840デフォルトの名無しさん
2020/03/11(水) 10:35:05.80ID:9AoZOnAU >>829を読むとcaseもifも使わないでシンプルに出来たと言っていて、本人はifになんか全然拘っていないんだよな。何故か勝手にしつこく敵視してる笑。
841デフォルトの名無しさん
2020/03/11(水) 10:40:57.60ID:FWSDJbu9 敵視してるのは>>831だぞw
842デフォルトの名無しさん
2020/03/11(水) 15:58:19.41ID:6PQL09wH これがアスベというのだな
843デフォルトの名無しさん
2020/03/11(水) 18:51:36.11ID:6kL2fYSe 無駄なcat的な何か
844デフォルトの名無しさん
2020/03/14(土) 09:40:09.35ID:H7XbSJpX 知らんかったけど、こんな書き方できるんやな
cat << HERE |
abc
HERE
sed s/a/b/g
cat <<HERE &&
abc
HERE
echo abc
謎な書き方多すぎw
cat << HERE |
abc
HERE
sed s/a/b/g
cat <<HERE &&
abc
HERE
echo abc
謎な書き方多すぎw
845デフォルトの名無しさん
2020/03/14(土) 09:44:21.77ID:H7XbSJpX cat <<HERE && cat<<HERE
aaa
HERE
bbb
HERE
わろたw
これも動くんだ
aaa
HERE
bbb
HERE
わろたw
これも動くんだ
846デフォルトの名無しさん
2020/03/14(土) 11:50:07.06ID:9+oeBXql zshだとOKだけどbashだけど文法エラーになるものってあるかな?
例えばbashだとOKだけど、shでは文法エラーになるものに配列がある。
$ bash -cn 'a=()'
$ sh -cn 'a=()'
sh: 1: Syntax error: "(" unexpected
これのzsh版
例えばbashだとOKだけど、shでは文法エラーになるものに配列がある。
$ bash -cn 'a=()'
$ sh -cn 'a=()'
sh: 1: Syntax error: "(" unexpected
これのzsh版
847デフォルトの名無しさん
2020/03/14(土) 11:52:32.93ID:9+oeBXql ただしこれは除く
$ bash -cn 'foo() :'
bash: -c: 行 0: 予期しないトークン `:' 周辺に構文エラーがあります
bash: -c: 行 0: `foo() :'
これはshでは通る。POSIX準拠の構文なはず。だけどbashが通らない珍しい例
$ sh -cn 'foo() :'
$ bash -cn 'foo() :'
bash: -c: 行 0: 予期しないトークン `:' 周辺に構文エラーがあります
bash: -c: 行 0: `foo() :'
これはshでは通る。POSIX準拠の構文なはず。だけどbashが通らない珍しい例
$ sh -cn 'foo() :'
848デフォルトの名無しさん
2020/03/14(土) 15:19:53.15ID:4q4RZYWz 環境はMac mojave、lsとecho $(ls)とで挙動が違うのってなんででしょうか
前者はスペースや改行がしっかりされてるんですが後者は整形されませんでした
前者はスペースや改行がしっかりされてるんですが後者は整形されませんでした
849デフォルトの名無しさん
2020/03/14(土) 15:51:10.82ID:ILPzjwAA lsは出力先によってオプションを指定しない場合のdefault formatが変わる
そういう仕様
そういう仕様
850デフォルトの名無しさん
2020/03/14(土) 16:50:55.95ID:cW1wo+Y7 >>848
echoなんぞに引数で渡す場合は、引数として渡すために分割されてるからじゃね。逆に整形されてるとも言える
echo "$(ls)"
(IFS=''; echo $(ls))
だと同じくならなくね?
echoなんぞに引数で渡す場合は、引数として渡すために分割されてるからじゃね。逆に整形されてるとも言える
echo "$(ls)"
(IFS=''; echo $(ls))
だと同じくならなくね?
851デフォルトの名無しさん
2020/03/14(土) 17:16:06.25ID:aw8SOrjK852デフォルトの名無しさん
2020/03/14(土) 17:30:36.50ID:ILPzjwAA $ echo "$(export COLUMNS=159; export CLICOLOR_FORCE=1; ls -C)"
これでlsだけの時と同じ出力になった
これでlsだけの時と同じ出力になった
853デフォルトの名無しさん
2020/03/14(土) 17:34:32.34ID:aw8SOrjK それは一つの引数の中に改行があるからな
別の問題として最後に複数の改行があっても一つにまとまるから
厳密には同じではない
別の問題として最後に複数の改行があっても一つにまとまるから
厳密には同じではない
854デフォルトの名無しさん
2020/03/14(土) 17:48:52.56ID:Qg6b8RMl なにいってるの
855デフォルトの名無しさん
2020/03/14(土) 17:52:54.94ID:aw8SOrjK 正しいことを言ってる
856デフォルトの名無しさん
2020/03/14(土) 17:55:17.78ID:Qg6b8RMl 変わったやつなのはわかった
857デフォルトの名無しさん
2020/03/14(土) 17:56:25.94ID:aw8SOrjK 教えてほしいなら、何を教えればいいか具体的に言おうねw
質問者のくせに
質問者のくせに
858デフォルトの名無しさん
2020/03/14(土) 17:58:01.23ID:Qg6b8RMl おかしなやつだったか
859デフォルトの名無しさん
2020/03/14(土) 18:01:56.55ID:aw8SOrjK まーた始まった
860デフォルトの名無しさん
2020/03/14(土) 18:20:00.64ID:tUDMKnWI お前がな
861デフォルトの名無しさん
2020/03/14(土) 21:45:32.98ID:fgvgQcum >>844
その仕様は Perl にも受け継がれてるよ。
その仕様は Perl にも受け継がれてるよ。
862デフォルトの名無しさん
2020/03/14(土) 23:56:32.86ID:9VuyfYoc echo は、連続した空白を、1つにまとめる
863デフォルトの名無しさん
2020/03/15(日) 00:05:16.78ID:7lggs81n $ echo " foo bar " " baz qux"
__foo__bar_____baz__qux
空白まとまらないけど、なんの話をしてるの?
__foo__bar_____baz__qux
空白まとまらないけど、なんの話をしてるの?
864デフォルトの名無しさん
2020/03/15(日) 00:13:30.80ID:1+6iz56B $ echo " foo bar " " baz qux"
_foo_bar___baz_qux
って事を言ってるんじゃないかな
_foo_bar___baz_qux
って事を言ってるんじゃないかな
865デフォルトの名無しさん
2020/03/15(日) 00:16:12.28ID:1+6iz56B あららw "_" をスペースに読み換えて頂戴
$ echo " foo bar "_____________" baz qux"
_foo_bar___baz_qux
$ echo " foo bar "_____________" baz qux"
_foo_bar___baz_qux
866デフォルトの名無しさん
2020/03/15(日) 01:09:56.98ID:7lggs81n マジか!?
それechoとは関係ないよね
それechoとは関係ないよね
867デフォルトの名無しさん
2020/03/15(日) 03:22:11.24ID:DhvkTO6y やってるのはシェルだよな
868デフォルトの名無しさん
2020/03/15(日) 09:50:54.32ID:4Gm4pJRZ せっかく俺が、複数の引数をっていってんのに
869デフォルトの名無しさん
2020/03/15(日) 10:12:42.77ID:IC7rc7YS >>862はいつものRuby君だろ。相変わらずデタラメを垂れ流してるな。
870デフォルトの名無しさん
2020/03/15(日) 12:24:19.50ID:ekOFLY9+ exprの正規表現関連の機能って便利だな。
恥かしながらPOSIXで定義されているとは思わず,
ずっとBash拡張だと思って利用を避けてきてたわw
sedだと変数の値に対しての操作が一発でできない(printf '%s' "$var"なんかを噛ませないといけない)
から、「変数に対して,指定した位置の文字を抜きだす」くらいの単純作業なら,
sedよりexprで処理した方がコマンドの個数も少なくなるし,よさげ。
恥かしながらPOSIXで定義されているとは思わず,
ずっとBash拡張だと思って利用を避けてきてたわw
sedだと変数の値に対しての操作が一発でできない(printf '%s' "$var"なんかを噛ませないといけない)
から、「変数に対して,指定した位置の文字を抜きだす」くらいの単純作業なら,
sedよりexprで処理した方がコマンドの個数も少なくなるし,よさげ。
871デフォルトの名無しさん
2020/03/15(日) 13:45:49.67ID:4Gm4pJRZ872デフォルトの名無しさん
2020/03/15(日) 17:46:54.09ID:ekOFLY9+ >>871
Bashとは無関係とはいっても
echoみたいにPOSIXでは「外部コマンド」とされてるけど
Bashでは組み込みコマンドで,かつ独自の拡張機能が備わっている。
みたいな場合も考えられる。
Bashとは無関係とはいっても
echoみたいにPOSIXでは「外部コマンド」とされてるけど
Bashでは組み込みコマンドで,かつ独自の拡張機能が備わっている。
みたいな場合も考えられる。
873デフォルトの名無しさん
2020/03/15(日) 20:32:36.11ID:LgQopvr+ >>872
/bin/exprで使えばええ
/bin/exprで使えばええ
874デフォルトの名無しさん
2020/03/15(日) 21:16:13.77ID:ekOFLY9+ >>873
いや,別に「外部コマンドとしてのexprが使いたい」なんて言ってない。
いや,別に「外部コマンドとしてのexprが使いたい」なんて言ってない。
875デフォルトの名無しさん
2020/03/15(日) 21:39:15.64ID:UEcfE5Ac 伝わらなくてもどかしそうw
876デフォルトの名無しさん
2020/03/15(日) 22:09:22.92ID:7377Zo4Z >>872
exprがビルトインになってるシェルは存在しない
exprがビルトインになってるシェルは存在しない
877デフォルトの名無しさん
2020/03/15(日) 22:19:50.83ID:GTp/Qp/S exprぐらいシェルのビルトインになっていてもおかしくない。ある意味思い込み
exprの正規表現関連はbashの拡張だと思っていた。exprがbashのビルトインしくはbashのオマケ外部コマンドなのが必須=完全な思い込み
というだけだろ。言いたいことはそこじゃないだろに、読み取ってやれよw
exprの正規表現関連はbashの拡張だと思っていた。exprがbashのビルトインしくはbashのオマケ外部コマンドなのが必須=完全な思い込み
というだけだろ。言いたいことはそこじゃないだろに、読み取ってやれよw
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国「日本で中国人への犯罪が多発」 日本側の否定に「先週も5人逮捕」と反論 [夜のけいちゃん★]
- 円安で増加の風俗目的の中国人インバウンド 客に処罰規定なし、悲しき売春観光大国の現状 [蚤の市★]
- 首相、台湾有事答弁で釈明に終始 政治とカネには「そんなことより」 [蚤の市★]
- 【文春】元TOKIO・国分太一(51)「女性スタッフ2名への“わいせつ事案”」日テレ事情聴取の全貌が分かった! ★6 [Ailuropoda melanoleuca★]
- 【芸能】小西真奈美47歳 30代で「毎日抜け毛が…」白髪&シミも激白 当時の原因&改善法明かす [湛然★]
- 【サッカー】UEFA-CL第5節 アーセナル×バイエルン、PSG×トッテナム、リバプール×PSV、オリンピアコス×レアル [久太郎★]
- 【高市悲報】中国「ふにゃふにゃ言いながら、時が自然に解決するのを期待する—そんなジャップ流は決して通用しない」 [115996789]
- 百田尚樹「日本は税金が高すぎる。私はそれほど大金持ちではないが、毎年収入の55%を納税している。江戸時代の農民以下の扱いだ」 [309323212]
- ぶっちゃけ排外主義のなにが悪いの? [279254606]
- 詐欺に引っかかる奴は被害者としてヨチヨチされるけど
- 【1万人玉砕】ペリリュー島の戦い、かわいくアニメ化されてしまう [663277603]
- ひろゆきとあのちゃん
