!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512
シェルスクリプトに関する総合スレッドです。
スレ立て時は以下の文を先頭行に加えて下さい。
後のつけ忘れ防止の為に複数行重ねて追加推奨
!extend:on:vvvvv:1000:512
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
前スレ
シェルスクリプト総合 その28
http://mevius.5ch.net/test/read.cgi/tech/1532397676/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
探検
シェルスクリプト総合 その29
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 3efb-m2E0)
2018/09/22(土) 11:53:21.38ID:BBiLRgnj067デフォルトの名無しさん (オッペケ Sr71-/xLO)
2018/09/26(水) 10:01:22.38ID:FJCeOZRMr > プログラムが終了していたら再起動し、
親シェルスクリプト(プログラム)作ってループ起動
例えばcronの5分間隔とかにすると隙間が開く可能性がある
> 20秒以上動いていたら強制終了させて再起動したい。
監視シェルスクリプト(プログラム)作る
起動させた時間はpsコマンドで分かる
今の時刻はdateコマンドで分かる
強制終了はkillコマンドでできる
監視の間隔(チェックを何分おきにやるか)は自分で決める
例えば1分間隔で監視したら最悪60秒以上動く場合がある
waitしないループは結構CPUに負荷をかけるから注意
親シェルスクリプト(プログラム)作ってループ起動
例えばcronの5分間隔とかにすると隙間が開く可能性がある
> 20秒以上動いていたら強制終了させて再起動したい。
監視シェルスクリプト(プログラム)作る
起動させた時間はpsコマンドで分かる
今の時刻はdateコマンドで分かる
強制終了はkillコマンドでできる
監視の間隔(チェックを何分おきにやるか)は自分で決める
例えば1分間隔で監視したら最悪60秒以上動く場合がある
waitしないループは結構CPUに負荷をかけるから注意
68デフォルトの名無しさん (ワッチョイ 2e98-coYL)
2018/09/26(水) 11:15:01.91ID:yzZF1GUc0 こんな感じかねぇ
プログラム名からプロセスIDを取得して変数に入れる
while :; do
psコマンドでプロセスID変数の起動時間取得
if 取得できたら; then
if 20秒以上経過していたら; then
kill プロセスID
fi
else # 取得できなかったら
プログラム起動 &
新たなプロセスIDを変数に入れる
fi
sleep 1
done
プログラム名からプロセスIDを取得して変数に入れる
while :; do
psコマンドでプロセスID変数の起動時間取得
if 取得できたら; then
if 20秒以上経過していたら; then
kill プロセスID
fi
else # 取得できなかったら
プログラム起動 &
新たなプロセスIDを変数に入れる
fi
sleep 1
done
69デフォルトの名無しさん (ワッチョイ 2e98-coYL)
2018/09/26(水) 15:07:59.55ID:yzZF1GUc0 setコマンドで変数一覧が見れる機能の使い道にやっと気づいた
man bashにはこうある
> オプションなしの場合は、シェル変数全ての名前と値の組が表示されます。
> 表示は、現在設定されている変数を設定や再設定をする入力 として
> 再利用できるフォーマットで行われます。
ようは変数のシリアライズとデシリアライズだよなーと思ってた
でもそうだとすると普通は特定の変数のみシリアライズ&デシリアライズしたいわけで
全部だされても困る。指定された変数だけ表示できないのか?
変数の中には改行が含まれることもあるから、絞り込むのも大変だぞ
ちなみになんのために俺がsetを調べていたかと言うと、サブシェルの中から
変数の値を返す方法はないものかと(再度)調べていた。
いわゆるwhile read の中で行数数えても、変数は元に戻る問題な
i=0
cat /etc/hosts | while read line; do
i=$((i+1))
done
echo $i # whileがサブシェルで実行されるからもとに戻る
この解決方法として、echoでevalできる形の文字列を返してサブシェルの外で
evalするやり方。このテクニックは最近俺の中で常識となっていた。
でもな、setでevalできる文字を返せるのはわかる。だが欲しいのは変数 i だけなんだよ!
set使えねーなって思ってた。
頭が硬かった。setで表示されたものすべてをevalすりゃいいんや。
サブシェルの中の変数は、サブシェルの外を引き継いてるんだから変えない限り同じ。
evalしても変わらない。いちいち必要なものだけechoする必要なかったんや
man bashにはこうある
> オプションなしの場合は、シェル変数全ての名前と値の組が表示されます。
> 表示は、現在設定されている変数を設定や再設定をする入力 として
> 再利用できるフォーマットで行われます。
ようは変数のシリアライズとデシリアライズだよなーと思ってた
でもそうだとすると普通は特定の変数のみシリアライズ&デシリアライズしたいわけで
全部だされても困る。指定された変数だけ表示できないのか?
変数の中には改行が含まれることもあるから、絞り込むのも大変だぞ
ちなみになんのために俺がsetを調べていたかと言うと、サブシェルの中から
変数の値を返す方法はないものかと(再度)調べていた。
いわゆるwhile read の中で行数数えても、変数は元に戻る問題な
i=0
cat /etc/hosts | while read line; do
i=$((i+1))
done
echo $i # whileがサブシェルで実行されるからもとに戻る
この解決方法として、echoでevalできる形の文字列を返してサブシェルの外で
evalするやり方。このテクニックは最近俺の中で常識となっていた。
でもな、setでevalできる文字を返せるのはわかる。だが欲しいのは変数 i だけなんだよ!
set使えねーなって思ってた。
頭が硬かった。setで表示されたものすべてをevalすりゃいいんや。
サブシェルの中の変数は、サブシェルの外を引き継いてるんだから変えない限り同じ。
evalしても変わらない。いちいち必要なものだけechoする必要なかったんや
70デフォルトの名無しさん (ワッチョイ 2e98-coYL)
2018/09/26(水) 15:10:23.80ID:yzZF1GUc0 長文乙w つーわけで、サブシェルの中から変数を返す方法 汎用版
i=0
eval "$(cat /etc/hosts | { while read line; do
i=$((i+1))
done
set
})"
echo $i # 俺の環境では11だった
set呼ぶだけで、簡単に変数返せるぞ
i=0
eval "$(cat /etc/hosts | { while read line; do
i=$((i+1))
done
set
})"
echo $i # 俺の環境では11だった
set呼ぶだけで、簡単に変数返せるぞ
71デフォルトの名無しさん (ワッチョイ 2e98-coYL)
2018/09/26(水) 15:11:28.48ID:yzZF1GUc0 ちなみにbashとかだとデフォルトでは関数まで返しちゃうので注意な
72デフォルトの名無しさん (ワッチョイ c964-vX2D)
2018/09/26(水) 22:48:58.32ID:p8TYnMT50 シェルスクリプトじゃないんだけど
Makefileのファイル名(例えばGNUMakefileだったりmakefileだったりするよね)
を取得したりってできる?
つまり
$ cat ./Makefile
all:
>---echo $0
$ make
Makefile
みたいな。もちろんMakefileはshが解釈しないんで, $0を使うことはできないけど。
Makefileのファイル名(例えばGNUMakefileだったりmakefileだったりするよね)
を取得したりってできる?
つまり
$ cat ./Makefile
all:
>---echo $0
$ make
Makefile
みたいな。もちろんMakefileはshが解釈しないんで, $0を使うことはできないけど。
73デフォルトの名無しさん (ワッチョイ c964-vX2D)
2018/09/26(水) 23:44:41.88ID:p8TYnMT50 追記
GNU makeなら$(MAKEFILE_LIST)が使えるらしいがFreeBSDでも使いたいんだよね……
GNU makeなら$(MAKEFILE_LIST)が使えるらしいがFreeBSDでも使いたいんだよね……
74デフォルトの名無しさん (ワッチョイ 77a7-c77k)
2018/09/27(木) 00:12:48.73ID:indBRC1Z0 MAKEFILE_LIST
https://www.freebsd.org/cgi/man.cgi?query=make&apropos=0&sektion=0&manpath=FreeBSD+6.2-RELEASE&format=html
https://www.freebsd.org/cgi/man.cgi?query=make&apropos=0&sektion=0&manpath=FreeBSD+6.2-RELEASE&format=html
75デフォルトの名無しさん (ワッチョイ 9fb3-zW/9)
2018/09/27(木) 00:23:32.14ID:IUmy3t5S0 all:
@echo $(lastword $(MAKEFILE_LIST))
とか。
@echo $(lastword $(MAKEFILE_LIST))
とか。
76デフォルトの名無しさん (ワッチョイ 9fb3-zW/9)
2018/09/27(木) 00:24:08.12ID:IUmy3t5S0 おっと、TAB が使えないんだったな
77デフォルトの名無しさん (ワッチョイ 77a7-c77k)
2018/09/27(木) 00:36:01.18ID:indBRC1Z0 ああ、>>74はめっちゃ古いのか
.MAKE.MAKEFILES
https://www.freebsd.org/cgi/man.cgi?query=make&apropos=0&sektion=0&manpath=FreeBSD+11.2-RELEASE&arch=default&format=html
今度は試してみたが確かにっぽい
.MAKE.MAKEFILES
https://www.freebsd.org/cgi/man.cgi?query=make&apropos=0&sektion=0&manpath=FreeBSD+11.2-RELEASE&arch=default&format=html
今度は試してみたが確かにっぽい
78デフォルトの名無しさん (ワッチョイ 178a-VlcY)
2018/09/27(木) 02:38:06.19ID:RGPgoULv079デフォルトの名無しさん (ワッチョイ ff98-aemA)
2018/09/27(木) 02:48:37.10ID:Fk1HpByz080デフォルトの名無しさん (ワッチョイ ff98-aemA)
2018/09/27(木) 03:09:09.89ID:Fk1HpByz0 もう少し見やすく、汎用的な書き方をするとこんな感じかな
サブシェル(change_vars)内で追加や変更した変数を
すべてサブシェルの親に返す方法
# もちろん例
change_vars() { i=123; }
eval "$(somecommand | { change_vars; set; })"
echo $i
実際には変更してないものすべてを再代入してるわけだが
それを行った所で問題はない。
ただしreadonlyを使ってると代入できなくてエラーになる。
これはなにかいい回避策はないだろうか
サブシェル(change_vars)内で追加や変更した変数を
すべてサブシェルの親に返す方法
# もちろん例
change_vars() { i=123; }
eval "$(somecommand | { change_vars; set; })"
echo $i
実際には変更してないものすべてを再代入してるわけだが
それを行った所で問題はない。
ただしreadonlyを使ってると代入できなくてエラーになる。
これはなにかいい回避策はないだろうか
81デフォルトの名無しさん (ワッチョイ ff98-aemA)
2018/09/27(木) 03:23:00.68ID:Fk1HpByz0 readonlyになってる変数一覧はreadonly -pで取得できる
その結果をパースしてごにゃごにゃやればできるんだろうけど、
readonly -pの結果が、
bashだと declare -r a="1"
dashだと readonly a='1'
と異なるのでパースが面倒くさい上に、
変数名がわかったからといってどうするのだ?問題がある
サブシェル内でもreadonlyだからunsetできない。
setをパースして消すのは改行文字とかの対応で面倒
エラーを無視しようにもうまくいかない
詰んだw
その結果をパースしてごにゃごにゃやればできるんだろうけど、
readonly -pの結果が、
bashだと declare -r a="1"
dashだと readonly a='1'
と異なるのでパースが面倒くさい上に、
変数名がわかったからといってどうするのだ?問題がある
サブシェル内でもreadonlyだからunsetできない。
setをパースして消すのは改行文字とかの対応で面倒
エラーを無視しようにもうまくいかない
詰んだw
82デフォルトの名無しさん (ワッチョイ 5764-u1F+)
2018/09/27(木) 03:37:41.74ID:GWQb325r0 "Field with Space" "Second Field" ...
みたいなフィールの連続に対して一番初めのフィールドを取得したいんだけど
なんかいい方法ない? ただしフィールドのなかに特殊な文字は含まれないし、「"」記号もフィールを区別する目的以外には使われてない。
これコマンドに渡す引数の形と似てるから$1とか上手く利用したらいい感じの処理ができそうなんだけど
思い付かん……。
みたいなフィールの連続に対して一番初めのフィールドを取得したいんだけど
なんかいい方法ない? ただしフィールドのなかに特殊な文字は含まれないし、「"」記号もフィールを区別する目的以外には使われてない。
これコマンドに渡す引数の形と似てるから$1とか上手く利用したらいい感じの処理ができそうなんだけど
思い付かん……。
83デフォルトの名無しさん (ワッチョイ 5764-u1F+)
2018/09/27(木) 03:38:09.61ID:GWQb325r0 なぜかフィールドが二箇所でフィールになってるww
84デフォルトの名無しさん (ワッチョイ ff98-aemA)
2018/09/27(木) 03:50:48.26ID:Fk1HpByz0 ちゃんとフールって書けよw
こんな感じだな
line='"Field with Space" "Second Field"'
echo $line
# 関数呼び出し
foo() {
echo "foo1: $1"
echo "foo2: $2"
}
eval fool $line
# または
eval set -- $line
echo "set1: $1"
echo "set2: $2"
もちろんeval使ってるので、入力データが安全であることが前提
あとは1文字ずつパースして処理するとか
こんな感じだな
line='"Field with Space" "Second Field"'
echo $line
# 関数呼び出し
foo() {
echo "foo1: $1"
echo "foo2: $2"
}
eval fool $line
# または
eval set -- $line
echo "set1: $1"
echo "set2: $2"
もちろんeval使ってるので、入力データが安全であることが前提
あとは1文字ずつパースして処理するとか
85デフォルトの名無しさん (ワッチョイ 5764-u1F+)
2018/09/27(木) 04:38:59.49ID:GWQb325r0 あーやっぱり変数に代入する感じか。
(データが安全なのは保証されてるんだけど 長いんだよね)
でもありがとう。とりあえずそれで行く。
(データが安全なのは保証されてるんだけど 長いんだよね)
でもありがとう。とりあえずそれで行く。
86デフォルトの名無しさん (ワッチョイ ff98-aemA)
2018/09/27(木) 04:43:30.53ID:Fk1HpByz0 変数というか、$1, $2, ... だけど
変数($1等含む)に入れないでどうやれとw
標準入力?
変数($1等含む)に入れないでどうやれとw
標準入力?
87デフォルトの名無しさん (ワッチョイ 5764-u1F+)
2018/09/27(木) 05:30:19.44ID:GWQb325r0 いや 結局変数に入れることと一緒なんだけど
$ echo '"Field with Space" "Second Field"' | { eval set -- "$(cat -)"; echo $1; }
みたいにしてみた。というのは実際のデータは標準出力から流れてくるから
できるだけパイプで処理したいなというのがあった。
いずれにせよeval setなんて思い付きもしなかったんで むちゃくちゃ感謝してる。
難癖を付けてる訳ではないよ。いやマジで。
$ echo '"Field with Space" "Second Field"' | { eval set -- "$(cat -)"; echo $1; }
みたいにしてみた。というのは実際のデータは標準出力から流れてくるから
できるだけパイプで処理したいなというのがあった。
いずれにせよeval setなんて思い付きもしなかったんで むちゃくちゃ感謝してる。
難癖を付けてる訳ではないよ。いやマジで。
88デフォルトの名無しさん (ワッチョイ 1798-aemA)
2018/09/27(木) 07:41:11.09ID:wRik+4En0 >>87
別に気分悪くしたとかじゃなくて、
なにか処理するなら結局変数に入れるよなーってだけだよ
標準入力からでもreadで変数に入れるわけだし
最近eval多用してる。もちろんそれがどうしても必要だからだけど
特に速度が遅くなるわけでもないし色々と便利
別に気分悪くしたとかじゃなくて、
なにか処理するなら結局変数に入れるよなーってだけだよ
標準入力からでもreadで変数に入れるわけだし
最近eval多用してる。もちろんそれがどうしても必要だからだけど
特に速度が遅くなるわけでもないし色々と便利
89デフォルトの名無しさん (ワッチョイ 377f-2rmu)
2018/09/27(木) 09:31:12.30ID:0Kr1SoI20 丁寧な回答をもらっておいて「でも」「とりあえず」は失礼だろう
「お前の回答はイマイチだが時間もないし採用してやるか」という感じかな?
「お前の回答はイマイチだが時間もないし採用してやるか」という感じかな?
90デフォルトの名無しさん (ワッチョイ 1798-aemA)
2018/09/27(木) 09:36:53.29ID:wRik+4En0 今日の荒らしは>>89
91デフォルトの名無しさん (アウアウカー Saab-HGqR)
2018/09/27(木) 10:20:00.38ID:pwwRK9qRa 荒らし認定兄貴今日もお疲れ様です
92デフォルトの名無しさん (ワッチョイ 178a-VlcY)
2018/09/27(木) 11:06:37.78ID:RGPgoULv0 正論を書くとあらし認定されるんですね
93デフォルトの名無しさん (オッペケ Sr4b-+FqY)
2018/09/27(木) 12:20:46.63ID:99b9Jx0Mr 大体失礼なのはこの手の答えたがりw
94デフォルトの名無しさん (アウアウカー Saab-XaUO)
2018/09/27(木) 13:17:03.86ID:U92lHhY6a >>70
それ set じゃなくて最後に echo i=$i だけで良いのでは?
それ set じゃなくて最後に echo i=$i だけで良いのでは?
95デフォルトの名無しさん (ワッチョイ 1798-aemA)
2018/09/27(木) 14:01:53.41ID:wRik+4En096デフォルトの名無しさん (ワッチョイ 1798-aemA)
2018/09/27(木) 14:05:58.33ID:wRik+4En0 こういう問題について考えていると、bashの拡張ってよく考えられてるなって思うよ
ちゃんと足りなくて必要な機能を追加してくれてる
https://qiita.com/t_nakayama0714/items/80b4c94de43643f4be51#prefix-%E5%A4%89%E6%95%B0%E5%90%8D%E4%B8%80%E8%A6%A7
ちゃんと足りなくて必要な機能を追加してくれてる
https://qiita.com/t_nakayama0714/items/80b4c94de43643f4be51#prefix-%E5%A4%89%E6%95%B0%E5%90%8D%E4%B8%80%E8%A6%A7
97デフォルトの名無しさん (ワッチョイ 5764-u1F+)
2018/09/27(木) 17:43:23.75ID:GWQb325r0 https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html#compact
こういうのとかもすっげえ便利だよね。
$ VAR=val; echo ${VAR@A}
VAR='val'
でも新しい機能なのか,日本語版のマニュアルに掲載されてない。
(まあ俺はPOSIXに準拠したほうがいいと思ってるので,こういう機能は
それこそ一時的な使い捨てスクリプトにしか使わんけど)
こういうのとかもすっげえ便利だよね。
$ VAR=val; echo ${VAR@A}
VAR='val'
でも新しい機能なのか,日本語版のマニュアルに掲載されてない。
(まあ俺はPOSIXに準拠したほうがいいと思ってるので,こういう機能は
それこそ一時的な使い捨てスクリプトにしか使わんけど)
98デフォルトの名無しさん (ワッチョイ bf9f-MYrK)
2018/09/28(金) 02:21:47.32ID:5yuIehG0099デフォルトの名無しさん (ワッチョイ 5764-u1F+)
2018/09/28(金) 10:45:59.06ID:TLhVFQk50 ファイルのメディアタイプを取得する汎用な方法ってあるかな。
自作してもいいんだけどできれば既存のものを利用したい。
file(1)コマンドの-iオプションがまず思い付いたんだけど,これは
GNU/Linux(http://man7.org/linux/man-pages/man1/file.1.html)
FreeBSD(https://www.freebsd.org/cgi/man.cgi?query=file&sektion=1)
ではメディアタイプで出力するとあるのに対し
本家POSIX(http://pubs.opengroup.org/onlinepubs/9699919799/utilities/file.html)
Solaris(https://docs.oracle.com/cd/E26502_01/html/E29030/file-1.html)
AIX(https://www.ibm.com/support/knowledgecenter/en/ssw_aix_72/com.ibm.aix.cmds2/file.htm)
なんかでは特になんの指定もなし……。
メディアタイプなんてド標準なんだから,しっかり規定しておいてほしかったなぁ。
POSIX 2017あたりでさ。
自作してもいいんだけどできれば既存のものを利用したい。
file(1)コマンドの-iオプションがまず思い付いたんだけど,これは
GNU/Linux(http://man7.org/linux/man-pages/man1/file.1.html)
FreeBSD(https://www.freebsd.org/cgi/man.cgi?query=file&sektion=1)
ではメディアタイプで出力するとあるのに対し
本家POSIX(http://pubs.opengroup.org/onlinepubs/9699919799/utilities/file.html)
Solaris(https://docs.oracle.com/cd/E26502_01/html/E29030/file-1.html)
AIX(https://www.ibm.com/support/knowledgecenter/en/ssw_aix_72/com.ibm.aix.cmds2/file.htm)
なんかでは特になんの指定もなし……。
メディアタイプなんてド標準なんだから,しっかり規定しておいてほしかったなぁ。
POSIX 2017あたりでさ。
100デフォルトの名無しさん (ワッチョイ 9f98-aemA)
2018/09/28(金) 13:07:01.59ID:bPXaydqo0 >>99
メディアタイプの種類自体は標準化されていたとしても、
あるファイルがどのメディアタイプかってのは決まらないでしょ?
拡張子cgiのスクリプトファイルだって、ソースコード配布サイトなら
テキストファイル扱いにしたいだろうし
メディアタイプの種類自体は標準化されていたとしても、
あるファイルがどのメディアタイプかってのは決まらないでしょ?
拡張子cgiのスクリプトファイルだって、ソースコード配布サイトなら
テキストファイル扱いにしたいだろうし
101デフォルトの名無しさん (ワッチョイ 1798-aemA)
2018/09/29(土) 13:10:10.20ID:d3Gl2lPg0 特別な意味をもたせた終了コードをなんにしようかな?って考えてるんだけど
既存で使われてる終了コードとなるべくかぶらせたくない。
どんなのがあるか知らない?
1, 2, 126, 127, 255(bashの予約)
0〜63(fsckで使用)
64〜78(sysexits ユーザー用のうち定義済みのもの)
128〜192(シグナルコードの範囲?)
参考
https://ja.wikipedia.org/wiki/%E7%B5%82%E4%BA%86%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9
https://linuxjm.osdn.jp/html/LDP_man-pages/man7/signal.7.html
https://linuxjm.osdn.jp/html/e2fsprogs/man8/fsck.8.html
http://kaworu.jpn.org/doc/FreeBSD/jman/man3/sysexits.3.php
http://tldp.org/LDP/abs/html/exitcodes.html
一番最後のリンクでsysexitsの作者は64〜113をユーザー用に使うことを提案してるみたいだけど
定義済みを除けば残りは79〜113かな
既存で使われてる終了コードとなるべくかぶらせたくない。
どんなのがあるか知らない?
1, 2, 126, 127, 255(bashの予約)
0〜63(fsckで使用)
64〜78(sysexits ユーザー用のうち定義済みのもの)
128〜192(シグナルコードの範囲?)
参考
https://ja.wikipedia.org/wiki/%E7%B5%82%E4%BA%86%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9
https://linuxjm.osdn.jp/html/LDP_man-pages/man7/signal.7.html
https://linuxjm.osdn.jp/html/e2fsprogs/man8/fsck.8.html
http://kaworu.jpn.org/doc/FreeBSD/jman/man3/sysexits.3.php
http://tldp.org/LDP/abs/html/exitcodes.html
一番最後のリンクでsysexitsの作者は64〜113をユーザー用に使うことを提案してるみたいだけど
定義済みを除けば残りは79〜113かな
102デフォルトの名無しさん (ワッチョイ 5780-q1nr)
2018/09/29(土) 13:18:50.90ID:IuTgmxg/0 オツムに欠陥があるヤツでなければ
普通に別の環境変数にいれる
普通に別の環境変数にいれる
103デフォルトの名無しさん (ワッチョイ 5764-u1F+)
2018/09/29(土) 14:08:42.53ID:PPHj/b7C0104デフォルトの名無しさん (ワッチョイ 1798-aemA)
2018/09/29(土) 15:12:55.62ID:d3Gl2lPg0 >>103
そう言われるかなとは思ったw
「俺の作ったプログラム」 ==> 「俺の作ったフィルタ」 ==> 「任意のプログラム」
という呼び出しの流れで
「俺の作ったプログラム」 で「任意のプログラム」 の終了コードを知りたいが、
「俺の作ったフィルタ」 独自の終了コードだけは特別扱いしたいということ
「任意のプログラム」のエラーは想定外のエラーで
「俺の作ったフィルタ」のエラーは想定されたエラーで
どちらもエラーではあるんだけど「俺の作ったプログラム」で表示するメッセージが違う
それぐらいなので、かぶってしまっても大きな問題は発生しないんだけどね
そう言われるかなとは思ったw
「俺の作ったプログラム」 ==> 「俺の作ったフィルタ」 ==> 「任意のプログラム」
という呼び出しの流れで
「俺の作ったプログラム」 で「任意のプログラム」 の終了コードを知りたいが、
「俺の作ったフィルタ」 独自の終了コードだけは特別扱いしたいということ
「任意のプログラム」のエラーは想定外のエラーで
「俺の作ったフィルタ」のエラーは想定されたエラーで
どちらもエラーではあるんだけど「俺の作ったプログラム」で表示するメッセージが違う
それぐらいなので、かぶってしまっても大きな問題は発生しないんだけどね
105デフォルトの名無しさん (ワッチョイ 5764-u1F+)
2018/09/29(土) 17:52:02.97ID:PPHj/b7C0 >>104
なるほど。
たしかにそういう目的ならば,終了コードが混ざる≠フはよくないな。
しかし例えばapt(1)は非root権限でシステム操作しようとすると
exit 100を返すというトンデモ仕様[Debian 2015]なので,もうどうしようもないんじゃねw
せっかくsysexitに権限異常を示す77があるのにどうして100番を使ってしまったのか……。
[Debian 2015]: https://manpages.debian.org/stretch/apt/apt.8.ja.html#%E8%A8%BA%E6%96%AD%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8
なるほど。
たしかにそういう目的ならば,終了コードが混ざる≠フはよくないな。
しかし例えばapt(1)は非root権限でシステム操作しようとすると
exit 100を返すというトンデモ仕様[Debian 2015]なので,もうどうしようもないんじゃねw
せっかくsysexitに権限異常を示す77があるのにどうして100番を使ってしまったのか……。
[Debian 2015]: https://manpages.debian.org/stretch/apt/apt.8.ja.html#%E8%A8%BA%E6%96%AD%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8
106デフォルトの名無しさん (ワッチョイ 5764-u1F+)
2018/09/29(土) 17:54:32.38ID:PPHj/b7C0 ああ,なんか説明不足で投稿しちゃった。
つまりさ,一応標準で定められたエラー番号はあるものの,
各種アプリケーションが従っている訳でもなく
Debian系のaptコマンドのような超大手のアプリケーションでさえ標準を無視してるんだから,
> 定義済みを除けば残りは79〜113かな
↑こういうのは考えないほうがいいんじゃない? ってこと。
つまりさ,一応標準で定められたエラー番号はあるものの,
各種アプリケーションが従っている訳でもなく
Debian系のaptコマンドのような超大手のアプリケーションでさえ標準を無視してるんだから,
> 定義済みを除けば残りは79〜113かな
↑こういうのは考えないほうがいいんじゃない? ってこと。
107デフォルトの名無しさん (ワッチョイ 1798-aemA)
2018/09/29(土) 18:22:23.04ID:d3Gl2lPg0 >>105-106
どこかのなにかにかぶってしまうのは防ぎようがないけど
よく使われるコマンドがこんな終了コードを使っていたっていう事例を知りたいのよ
fsckとかどう見てもエラーじゃねーだろコレっていうのが
エラーあつかいになってて以前はハマったことあるしw
https://linuxjm.osdn.jp/html/e2fsprogs/man8/fsck.8.html
> 1 - ファイルシステムのエラーが修正された
どこかのなにかにかぶってしまうのは防ぎようがないけど
よく使われるコマンドがこんな終了コードを使っていたっていう事例を知りたいのよ
fsckとかどう見てもエラーじゃねーだろコレっていうのが
エラーあつかいになってて以前はハマったことあるしw
https://linuxjm.osdn.jp/html/e2fsprogs/man8/fsck.8.html
> 1 - ファイルシステムのエラーが修正された
108デフォルトの名無しさん (ワッチョイ 1798-aemA)
2018/09/29(土) 18:23:25.37ID:d3Gl2lPg0 標準に準拠したいとかそういう話ではなく
単にぶつかりたくないだけ
単にぶつかりたくないだけ
109デフォルトの名無しさん (ワッチョイ 1798-aemA)
2018/09/29(土) 18:24:45.45ID:d3Gl2lPg0 > exit 100を返すというトンデモ仕様[Debian 2015]なので,もうどうしようもないんじゃねw
実を言うと今100を使おうとしていたw
やはり裏の裏の裏の裏ぐらいを読まないとダメだなw
実を言うと今100を使おうとしていたw
やはり裏の裏の裏の裏ぐらいを読まないとダメだなw
110デフォルトの名無しさん (ワッチョイ 5764-u1F+)
2018/09/29(土) 18:40:55.97ID:PPHj/b7C0 非0の返り値だけどコマンドは成功しているっていう例として有名なのはdiff(1)とかかな。
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/diff.html#tag_20_34_14
>1
> Differences were found.
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/diff.html#tag_20_34_14
>1
> Differences were found.
111デフォルトの名無しさん (ワッチョイ 9f5d-+h8b)
2018/09/29(土) 18:46:56.62ID:8M0IW2fy0 シグナルでも使ってみたらどうだろうか。
あるいは別にパイプを用意するとか。
あるいは別にパイプを用意するとか。
112デフォルトの名無しさん (ワッチョイ bf9f-MYrK)
2018/09/30(日) 02:44:50.58ID:KPqVv5wd0 絶対にぶつからないようにするには別の方法でエラーを伝えるようにするぐらいしか方法ないんじゃないか?
同じ値になる可能性のあるものをどちらから発生したかわからない状態で同じ所から得るなんてやはり無理があるだろう。
同じ値になる可能性のあるものをどちらから発生したかわからない状態で同じ所から得るなんてやはり無理があるだろう。
113デフォルトの名無しさん (ワッチョイ 1798-aemA)
2018/10/01(月) 01:15:09.47ID:2Ehpmx/A0 こんな書き方できたのか
a=1
case $a in
( 1 ) echo ok
esac
a=1
case $a in
( 1 ) echo ok
esac
114デフォルトの名無しさん (ワッチョイ bf9f-aemA)
2018/10/01(月) 02:02:45.71ID:IEGoOL+v0 お、おう
115デフォルトの名無しさん (ワッチョイ 1798-aemA)
2018/10/02(火) 19:23:29.52ID:6qOrAQgQ0 お題
ある関数に対して、apple orange banana ... とN個(Nは任意の個数)の引数を渡した時、
以下のような、引数とその引数のインデックス番号を出力する関数を作成せよ
(単語に対して数値が対応しているわけではない)
apple 1
orange 2
banana 3
:
ただし、外部コマンド、拡張POSIX機能、変数の使用は禁止とする
(ここでいう変数とはsetコマンドで表示されるもののことである)
ある関数に対して、apple orange banana ... とN個(Nは任意の個数)の引数を渡した時、
以下のような、引数とその引数のインデックス番号を出力する関数を作成せよ
(単語に対して数値が対応しているわけではない)
apple 1
orange 2
banana 3
:
ただし、外部コマンド、拡張POSIX機能、変数の使用は禁止とする
(ここでいう変数とはsetコマンドで表示されるもののことである)
116デフォルトの名無しさん (ワッチョイ 5764-u1F+)
2018/10/02(火) 21:27:13.63ID:yoF3UpeG0117デフォルトの名無しさん (ワッチョイ 5764-u1F+)
2018/10/02(火) 21:45:46.37ID:yoF3UpeG0 おいこら答えてやったんだからなんとか言えよコラ
エレガントすぎて腰が抜けたか?wwwww
まあ実際,自分で言うのもなんだけどかなり最良に近い方法じゃないかしら。
・POSIX.1-2017準拠
・空白などを含む引数も直感的に指定可能("word with space")
・単純 構造が簡単
・数値の増加にexpr(1)ではなく算術式を利用している為速い
エレガントすぎて腰が抜けたか?wwwww
まあ実際,自分で言うのもなんだけどかなり最良に近い方法じゃないかしら。
・POSIX.1-2017準拠
・空白などを含む引数も直感的に指定可能("word with space")
・単純 構造が簡単
・数値の増加にexpr(1)ではなく算術式を利用している為速い
118デフォルトの名無しさん (ワッチョイ 1723-sl6K)
2018/10/02(火) 22:03:54.77ID:kkfm+1S90 変数禁止だから不正解じゃない?
119デフォルトの名無しさん (ワッチョイ bf3b-c77k)
2018/10/02(火) 22:15:20.79ID:xDUI5Isc0120デフォルトの名無しさん (アウアウカー Saab-HGqR)
2018/10/02(火) 23:00:16.05ID:xTxFBCr4a 最初の一個だけならスマートだったのに
褒められたがりが
褒められたがりが
121デフォルトの名無しさん (ワッチョイ 5764-u1F+)
2018/10/03(水) 00:30:44.79ID:ej0n10jM0 煽りだよ だって明らかに学校の課題かなにかでしょ。
そんなのに真面目に付き合うほど俺は素直じゃない。
そんなのに真面目に付き合うほど俺は素直じゃない。
122デフォルトの名無しさん (ワッチョイ bf3b-c77k)
2018/10/03(水) 00:44:57.49ID:m57KKa9e0 苦しすぎな言い訳w
123デフォルトの名無しさん (ワッチョイ 5764-u1F+)
2018/10/03(水) 01:48:10.18ID:ej0n10jM0 まあそう思っとけw
124デフォルトの名無しさん (ワッチョイ bf9f-aemA)
2018/10/03(水) 01:59:13.13ID:jikKostS0 >>115
echo は使っては駄目? 拡張されていない sh だと echo はビルトインではなく /usr/bin/echo だと思うが。
echo は使っては駄目? 拡張されていない sh だと echo はビルトインではなく /usr/bin/echo だと思うが。
125デフォルトの名無しさん (ワッチョイ 1798-aemA)
2018/10/03(水) 02:01:17.96ID:NkO7phbc0126デフォルトの名無しさん (ワッチョイ 1798-aemA)
2018/10/03(水) 02:03:27.25ID:NkO7phbc0127デフォルトの名無しさん (ワッチョイ 1798-aemA)
2018/10/03(水) 02:14:54.02ID:NkO7phbc0 そうか。evalとか外部コマンドは実装不可能なものを除いて
ビルトインで実装することなんて決まりはないのか
では外部コマンドの定義を「現存するシェルでビルトインで実装されたことがないもの」にしよう
オレオレシェル作ってビルトインするのは問題の意図から外れるので、
現存する(誰もが容易に入手可能な)いずれかのシェルで
ビルトインされているならば使って良いものとする
ビルトインで実装することなんて決まりはないのか
では外部コマンドの定義を「現存するシェルでビルトインで実装されたことがないもの」にしよう
オレオレシェル作ってビルトインするのは問題の意図から外れるので、
現存する(誰もが容易に入手可能な)いずれかのシェルで
ビルトインされているならば使って良いものとする
128デフォルトの名無しさん (ワッチョイ 1798-aemA)
2018/10/03(水) 02:18:56.23ID:NkO7phbc0 あと拡張POSIX機能も使用してOKにしよう。
それを実現する裏技みたいなのがあったら嫌だなと思って入れたが、
もしそれでできるなら俺も勉強になるし。
ようするにPATH環境変数を空にして、どれかのシェルで動けばOKってことだな
条件がグダグダになってしまったw
それを実現する裏技みたいなのがあったら嫌だなと思って入れたが、
もしそれでできるなら俺も勉強になるし。
ようするにPATH環境変数を空にして、どれかのシェルで動けばOKってことだな
条件がグダグダになってしまったw
129デフォルトの名無しさん (アウアウカー Saab-XaUO)
2018/10/03(水) 12:27:47.15ID:61GCF4dla if や while を外部コマンド動かさずに使うには [ がビルトインのシェルでないとダメだな。
昔の sh は [ が test コマンドへのシンボリックリンクで外部コマンドだったし。
今でもその名残で /bin または /usr/bin に [ が入ってるよな。
昔の sh は [ が test コマンドへのシンボリックリンクで外部コマンドだったし。
今でもその名残で /bin または /usr/bin に [ が入ってるよな。
130デフォルトの名無しさん (ワッチョイ 1798-aemA)
2018/10/03(水) 13:43:00.79ID:NkO7phbc0 別件で現在主要のシェルで何がビルトインか調べたことがあるよ
. : [ break cd command continue echo eval exec exit export false kill pwd
read readonly return set shift test times trap true umask unset wait
これらは全てのシェルで使えると言っていいだろう
poshはログインシェルとしては使わないもの扱いなのか
alias bg fg type ulimitが削除されている。(typeないとか地味につらい)
busyboxはgetoptsがないみたい
意外だったのはprintfがビルトインでないシェルがmkshとposhの2つもあったこと。
しかも両方共echoでエスケープシーケンスを解釈してくれるから文字をそのまま出力できない。
mkshの方はset -o posixでエスケープシーケンスを無効にできるしビルトインのprintで代用できるんだが
poshは調べた限りビルトインコマンドでそのまま出力する方法がない
. : [ break cd command continue echo eval exec exit export false kill pwd
read readonly return set shift test times trap true umask unset wait
これらは全てのシェルで使えると言っていいだろう
poshはログインシェルとしては使わないもの扱いなのか
alias bg fg type ulimitが削除されている。(typeないとか地味につらい)
busyboxはgetoptsがないみたい
意外だったのはprintfがビルトインでないシェルがmkshとposhの2つもあったこと。
しかも両方共echoでエスケープシーケンスを解釈してくれるから文字をそのまま出力できない。
mkshの方はset -o posixでエスケープシーケンスを無効にできるしビルトインのprintで代用できるんだが
poshは調べた限りビルトインコマンドでそのまま出力する方法がない
131デフォルトの名無しさん (ワッチョイ bf3b-c77k)
2018/10/03(水) 13:47:38.74ID:m57KKa9e0 いいから、お題の参考答えを出しなさいw
オレオレ定義が曖昧すぎでお題になってないから、もういいでしょ
オレオレ定義が曖昧すぎでお題になってないから、もういいでしょ
132デフォルトの名無しさん (ワッチョイ 1798-aemA)
2018/10/03(水) 13:57:02.54ID:NkO7phbc0 >>131
問題訂正してやるから、もう少し頑張れやw
お題
ある関数に対して、apple orange banana ... とN個(Nは任意の個数)の引数を渡した時、
以下のような、引数とその引数のインデックス番号を出力する関数を作成せよ
(単語に対して数値が対応しているわけではない)
apple 1
orange 2
banana 3
:
ただし、変数の使用は禁止とし、シェル機能とビルトインコマンドのみを用いること
(ここでいう変数とはsetコマンドで表示されるもののことである)
(使用するコマンドはいずれかのシェルのビルトインコマンドであればよいが、
この問題用に独自シェルを作成するのは禁止とする)
問題訂正してやるから、もう少し頑張れやw
お題
ある関数に対して、apple orange banana ... とN個(Nは任意の個数)の引数を渡した時、
以下のような、引数とその引数のインデックス番号を出力する関数を作成せよ
(単語に対して数値が対応しているわけではない)
apple 1
orange 2
banana 3
:
ただし、変数の使用は禁止とし、シェル機能とビルトインコマンドのみを用いること
(ここでいう変数とはsetコマンドで表示されるもののことである)
(使用するコマンドはいずれかのシェルのビルトインコマンドであればよいが、
この問題用に独自シェルを作成するのは禁止とする)
133デフォルトの名無しさん (ワッチョイ bf3b-c77k)
2018/10/03(水) 13:59:49.96ID:m57KKa9e0 なんの目的かさっぱりわからんな。自分でできてんの?っていう疑問からなんだけどなw
>変数の使用は禁止とし
>(ここでいう変数とはsetコマンドで表示されるもののことである)
環境変数のことを言っているのかと思えば違うし、これだけでも曖昧というかオレオレ定義が曖昧だろう
>変数の使用は禁止とし
>(ここでいう変数とはsetコマンドで表示されるもののことである)
環境変数のことを言っているのかと思えば違うし、これだけでも曖昧というかオレオレ定義が曖昧だろう
134デフォルトの名無しさん (ワッチョイ 1798-aemA)
2018/10/03(水) 14:11:05.97ID:NkO7phbc0135デフォルトの名無しさん (ワッチョイ 1798-aemA)
2018/10/03(水) 14:13:32.35ID:NkO7phbc0 今日の24時までに答えが出なければヒント出しますw
136デフォルトの名無しさん (ワッチョイ f723-LrZ5)
2018/10/03(水) 14:16:57.73ID:6m7pNgyW0 そのヒントとやらもグダグダなんでしょw
137デフォルトの名無しさん (ワッチョイ bf3b-c77k)
2018/10/03(水) 14:17:05.40ID:m57KKa9e0 変数を使わない 言語(マシン語すら) は知らんなあ。そういう縛りを設けての目的はなんなん?
やってみたできるけど、クソのようなwにしかならんから、どうか、参考の答えを出してw
やってみたできるけど、クソのようなwにしかならんから、どうか、参考の答えを出してw
138デフォルトの名無しさん (ワッチョイ 1798-aemA)
2018/10/03(水) 14:19:23.20ID:NkO7phbc0 答えは明日。まあヒントみれば気づく人はすぐわかるでしょう。
コロンブスの卵だよ
コロンブスの卵だよ
139デフォルトの名無しさん (ワッチョイ bf3b-c77k)
2018/10/03(水) 14:20:30.02ID:m57KKa9e0 なんで常時上から目線なのかw コードで語ればいいのに
素晴らしいコードならそんなおれおれ上から目線しなくてもいいくらいなのに。なんかしらんがもったいつけてのまだ「ヒント」とかもったいつけてるしw
素晴らしいコードならそんなおれおれ上から目線しなくてもいいくらいなのに。なんかしらんがもったいつけてのまだ「ヒント」とかもったいつけてるしw
140デフォルトの名無しさん (ワッチョイ bf3b-c77k)
2018/10/03(水) 14:21:39.64ID:m57KKa9e0 なんかしらんが見つけて、俺すげーしたいだけっぽいなw
141デフォルトの名無しさん (ワッチョイ 1798-aemA)
2018/10/03(水) 14:22:11.11ID:NkO7phbc0 > そういう縛りを設けての目的はなんなん?
その理由も答えと一緒に明かします
その理由も答えと一緒に明かします
142デフォルトの名無しさん (ワッチョイ bf3b-c77k)
2018/10/03(水) 14:23:23.18ID:m57KKa9e0 いや、もういらんわw なんかキモすぎて付き合いきれないw
143デフォルトの名無しさん (ワッチョイ 5764-u1F+)
2018/10/03(水) 14:36:43.15ID:ej0n10jM0 多分だけど学校の課題だと予想
根拠は二点:
1. 問題が実利的でない。学校(それもあまり学力の高くない)にありがちな「こんなのできるかな?」系の問題である。
2. 煽ったらそれに乗っかって答えを出してくれる人が思ってるという点で質問者が精神的に幼ない。(高校生くらいか?)
根拠は二点:
1. 問題が実利的でない。学校(それもあまり学力の高くない)にありがちな「こんなのできるかな?」系の問題である。
2. 煽ったらそれに乗っかって答えを出してくれる人が思ってるという点で質問者が精神的に幼ない。(高校生くらいか?)
144デフォルトの名無しさん (ワッチョイ bf3b-c77k)
2018/10/03(水) 14:45:22.66ID:m57KKa9e0 posh とかいつもの人でしょ
いつもの人が学校の課題をしなきゃならん人なのか知らんけどw
いつもの人が学校の課題をしなきゃならん人なのか知らんけどw
145デフォルトの名無しさん (ワッチョイ 5764-u1F+)
2018/10/03(水) 15:06:30.08ID:ej0n10jM0 poshなんていうシェルがあるのね。初耳だわ。
146デフォルトの名無しさん (ワッチョイ 1798-aemA)
2018/10/03(水) 15:10:04.24ID:NkO7phbc0 >>2に書いてあるよ。俺もここ(の何スレか前)で初めて知った
147デフォルトの名無しさん (アウアウカー Saab-XaUO)
2018/10/03(水) 15:58:50.21ID:4kFnpcnsa $# と shift を使って逆順に値を付加することは簡単にできたんだがな。
148デフォルトの名無しさん (ワッチョイ 1798-aemA)
2018/10/03(水) 17:25:26.25ID:NkO7phbc0149デフォルトの名無しさん (ワッチョイ 9fb3-lCNR)
2018/10/03(水) 21:20:26.89ID:SM8JpmZX0 ちょっと前にもこんなグダグダ無かったっけ?
150デフォルトの名無しさん (アウウィフ FFdb-LSDD)
2018/10/03(水) 21:48:53.18ID:Tma5IQlaF 変数使ってはダメって、非合理的でない?
シェルの仕様否定してどーするの?
外部コマンドだって、それがUNIXの設計思想なんだからそれさえも否定するってのも理解不能
ならば、OSそのものを仮想的なものを仮定して
その上で動かすとでもしないと
大昔の情報処理技術者試験用に作られたアセンブラみたいな感じでさ
変数使わない、外部コマンド使用禁止、そんなアルゴリズムが何の役に立つんだろう?
シェルの仕様否定してどーするの?
外部コマンドだって、それがUNIXの設計思想なんだからそれさえも否定するってのも理解不能
ならば、OSそのものを仮想的なものを仮定して
その上で動かすとでもしないと
大昔の情報処理技術者試験用に作られたアセンブラみたいな感じでさ
変数使わない、外部コマンド使用禁止、そんなアルゴリズムが何の役に立つんだろう?
151デフォルトの名無しさん (ワッチョイ 5764-u1F+)
2018/10/03(水) 22:35:14.41ID:ej0n10jM0 でも前はワッチョイやIDがなかったから もっと酷かった。
今はNGすればオッケー☆
今はNGすればオッケー☆
152デフォルトの名無しさん (ワッチョイ 1e98-vBoO)
2018/10/04(木) 00:37:38.01ID:8ua9ZMtc0 ヒント忘れてたわw
func() {
*********
while [ $# -gt 1 ]; do
*********
shift
done
}
func apple orange banana
********の所は1行とは限りません
func() {
*********
while [ $# -gt 1 ]; do
*********
shift
done
}
func apple orange banana
********の所は1行とは限りません
153デフォルトの名無しさん (ワッチョイ 1e98-vBoO)
2018/10/04(木) 00:41:45.65ID:8ua9ZMtc0154デフォルトの名無しさん (ワッチョイ 1e98-vBoO)
2018/10/04(木) 00:43:44.36ID:8ua9ZMtc0155デフォルトの名無しさん (ワッチョイ 1e98-vBoO)
2018/10/04(木) 00:46:12.13ID:8ua9ZMtc0156デフォルトの名無しさん (ワッチョイ effb-v2gR)
2018/10/04(木) 00:49:17.75ID:C6pwZkBD0 いきなりレス数増えたと思ったらもう木曜か
157デフォルトの名無しさん (ワッチョイ b064-selW)
2018/10/04(木) 04:55:02.39ID:/YMF27MO0 >>152よ、お前のなかでは「$#」は変数じゃないのか……。
人様にクイズとやらを出す前にシェルとはなんなのかを学んだらどうだ?
人様にクイズとやらを出す前にシェルとはなんなのかを学んだらどうだ?
158デフォルトの名無しさん (ワッチョイ 1e98-vBoO)
2018/10/04(木) 05:43:44.35ID:8ua9ZMtc0 出題ぐらいちゃんと読もうぜw
> ただし、変数の使用は禁止とし、シェル機能とビルトインコマンドのみを用いること
> (ここでいう変数とはsetコマンドで表示されるもののことである)
> ただし、変数の使用は禁止とし、シェル機能とビルトインコマンドのみを用いること
> (ここでいう変数とはsetコマンドで表示されるもののことである)
159デフォルトの名無しさん (ワッチョイ b064-selW)
2018/10/04(木) 08:51:53.43ID:/YMF27MO0 bash 4.2以降はset組み込みコマンドの中に$#が含まれるようになったんだよなぁ…
ちゃんと調べて、どうぞ。
ちゃんと調べて、どうぞ。
160デフォルトの名無しさん (ワッチョイ 1e98-vBoO)
2018/10/04(木) 09:17:07.53ID:8ua9ZMtc0 ないですね。ちゃんと調べてどうぞ
foo() { set | grep '#='; }; foo
$ bash --version
GNU bash, バージョン 4.4.19(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2016 Free Software Foundation, Inc.
ライセンス GPLv3+: GNU GPL バージョン 3 またはそれ以降 <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
foo() { set | grep '#='; }; foo
$ bash --version
GNU bash, バージョン 4.4.19(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2016 Free Software Foundation, Inc.
ライセンス GPLv3+: GNU GPL バージョン 3 またはそれ以降 <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
161デフォルトの名無しさん (アウアウカー Sa0a-iYeS)
2018/10/04(木) 09:50:29.05ID:8DudSISka >>160
grap のパターンはそれでいいのか?
grap のパターンはそれでいいのか?
162デフォルトの名無しさん (ワッチョイ 1e98-vBoO)
2018/10/04(木) 10:01:44.50ID:8ua9ZMtc0163デフォルトの名無しさん (アウアウカー Sa0a-iYeS)
2018/10/04(木) 10:47:30.53ID:8DudSISka ああ。そうか。最初の$は要らないからそれでいいのか。
164デフォルトの名無しさん (ワッチョイ deb3-GavF)
2018/10/04(木) 14:55:58.09ID:7ib5/eAS0 grap コマンドか、なんか強うそうなイメージ
165デフォルトの名無しさん (ワッチョイ b064-selW)
2018/10/04(木) 16:22:52.78ID:/YMF27MO0 なんかもう誰かが作ってそうだよね。
まるでyaから始まる4文字のソフトウェアが被りまくってるように。
まるでyaから始まる4文字のソフトウェアが被りまくってるように。
166デフォルトの名無しさん (ワッチョイ 1e98-kArq)
2018/10/04(木) 16:55:15.20ID:8ua9ZMtc0 犯人はya
167デフォルトの名無しさん (ワッチョイ 1e98-kArq)
2018/10/04(木) 20:00:19.77ID:8ua9ZMtc0 正解者もいないようなのででは解答
このコードがどういうときに有用かは>>153で書いたとおり
set は使わなくても別にもう一つ関数を作れば同じことができるが
関数を作らずとも引数の再設定という方法がある。意外と便利だよ
func() {
set -- "$@" $(($#+2))
while [ $# -gt 1 ]; do
eval "echo \"$1 \$((\$$#-$#))\""
shift
done
}
func apple orange banana
このコードがどういうときに有用かは>>153で書いたとおり
set は使わなくても別にもう一つ関数を作れば同じことができるが
関数を作らずとも引数の再設定という方法がある。意外と便利だよ
func() {
set -- "$@" $(($#+2))
while [ $# -gt 1 ]; do
eval "echo \"$1 \$((\$$#-$#))\""
shift
done
}
func apple orange banana
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市内閣、支持率横ばい75% (日経・テレ東 世論調査) ★2 [少考さん★]
- 【調査】クレジットカード、1人何枚持つのが「平均的」?★2 [ひぃぃ★]
- グレタさんがイタリアで演説 [少考さん★]
- 【作家】高市総理支持の背景に見えるヤンキー的「ケンカ上等!」と「日本人は特別だ」感がとても怖い 北原みのり [少考さん★]
- 「ヘイトスピーチをやめろ」 各地の「移民反対デモ」に抗議活動 [蚤の市★]
- 「レアアースを精製できる技術は日本が持っている、日本にレアアース来なければ中国は精製できない」 衆議院答弁 ★2 [お断り★]
- 【U-NEXT】プレミアリーグ総合 ★38
- 【DAZN】フォーミュラGP【F1 2 3 SF P】Lap1814
- ハム専 エスコン日韓OB戦
- 競輪実況★1615
- 【DAZN】フォーミュラGP【F1 2 3 SF P】Lap1813
- 【D専】 ★2
- 【実況】わため!!!のえちえちラムベガス(こよりあり?)🐏🧪
- 【悲報】ホロライブ、派閥のせいで終了してしまう
- 🏡🌊💥👊😅👊💥🌊🏡
- 【高市速報】自民党広報「質問した岡田のせいで国益を損ねた」 [931948549]
- 1人で1000レスいってみる
- 家のインターネットが死んだ
