シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
シェルスクリプト総合 その31
https://mevius.5ch.net/test/read.cgi/tech/1565446670/
探検
シェルスクリプト総合 その32
レス数が900を超えています。1000を超えると表示できなくなるよ。
2019/10/25(金) 00:08:45.53ID:6btPTvif
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
878デフォルトの名無しさん
2020/03/15(日) 22:24:16.72ID:GTp/Qp/S 「Bash拡張」ではなく「GNU拡張」なんぞに置き換えればいいだけだな
879デフォルトの名無しさん
2020/03/15(日) 22:30:33.87ID:7377Zo4Z880デフォルトの名無しさん
2020/03/15(日) 22:35:36.36ID:GTp/Qp/S881デフォルトの名無しさん
2020/03/15(日) 22:42:53.24ID:7377Zo4Z 蛇足って話をするのなら、外部コマンドに反論すること自体が蛇足
そんなどうでもいいことじゃなくて、
sedでprintf '%s' "$var"とか言う意味不明な点を説明しろよ
変数の値に対しての操作が一発でできないのは「外部コマンド」ならどれも一緒だろ
そんなどうでもいいことじゃなくて、
sedでprintf '%s' "$var"とか言う意味不明な点を説明しろよ
変数の値に対しての操作が一発でできないのは「外部コマンド」ならどれも一緒だろ
882デフォルトの名無しさん
2020/03/15(日) 22:48:02.29ID:GTp/Qp/S 思い込みの理由を述べただけと読んでやれよ。なんでそうも噛み付いているの?
sedにネタ元渡すためにはとかじゃないの?echoでもいいんじゃないの?ソコは
exprは対象を引数として渡せるぐらいの意味、動作及び返り値が単純だから変数をちょっとイジるくらいならsedよりもって話じゃないの。俺はそう読み取ったけど
なんでそうも強く噛み付いているの?
sedにネタ元渡すためにはとかじゃないの?echoでもいいんじゃないの?ソコは
exprは対象を引数として渡せるぐらいの意味、動作及び返り値が単純だから変数をちょっとイジるくらいならsedよりもって話じゃないの。俺はそう読み取ったけど
なんでそうも強く噛み付いているの?
883デフォルトの名無しさん
2020/03/15(日) 22:50:35.45ID:7377Zo4Z > なんでそうも強く噛み付いているの?
噛み付いてないけど?俺はexprは外部コマンドと言っただけ
それ以外のことを言ってない。
過剰に反応してるのはお前では?
噛み付いてないけど?俺はexprは外部コマンドと言っただけ
それ以外のことを言ってない。
過剰に反応してるのはお前では?
884デフォルトの名無しさん
2020/03/15(日) 22:53:20.23ID:GTp/Qp/S 蛇足なことが続くなと思ったからだけど。蛇足な理由を言っただけだけど?
>>881なんて明らかに噛み付いているだろうにw 特に後半とか。よく言うよ
>>881なんて明らかに噛み付いているだろうにw 特に後半とか。よく言うよ
885デフォルトの名無しさん
2020/03/15(日) 22:59:01.24ID:7377Zo4Z 後半?これ?蛇足(bash拡張かどうか)じゃなくて本筋の話をしろとしか書いてないが?
> sedでprintf '%s' "$var"とか言う意味不明な点を説明しろよ
> 変数の値に対しての操作が一発でできないのは「外部コマンド」ならどれも一緒だろ
> sedでprintf '%s' "$var"とか言う意味不明な点を説明しろよ
> 変数の値に対しての操作が一発でできないのは「外部コマンド」ならどれも一緒だろ
886デフォルトの名無しさん
2020/03/15(日) 23:07:40.57ID:9BnnGhWf 無茶苦茶だなとしか言いようがない
で、その応えは>>882で納得したのかね?合っているのか知らんけど、俺は一応そうは読めたからなあ、「意味不明な点を[説明しろよ]」とか何様なんだか何噛み付いているのかとしか思えない
で、その応えは>>882で納得したのかね?合っているのか知らんけど、俺は一応そうは読めたからなあ、「意味不明な点を[説明しろよ]」とか何様なんだか何噛み付いているのかとしか思えない
887デフォルトの名無しさん
2020/03/15(日) 23:29:41.29ID:ekOFLY9+ えぇ……なんでそうも喧嘩腰なんですかね……。
888デフォルトの名無しさん
2020/03/15(日) 23:42:33.62ID:9BnnGhWf わからん...性かなww
889デフォルトの名無しさん
2020/03/15(日) 23:47:47.62ID:LgQopvr+ こんな所でしか他人に相手にして貰えないからでしょ?
890デフォルトの名無しさん
2020/03/15(日) 23:50:43.81ID:9BnnGhWf 読めなさそうな人はそうかもねw
891デフォルトの名無しさん
2020/03/15(日) 23:52:26.22ID:Uvpryj8C892デフォルトの名無しさん
2020/03/16(月) 05:03:15.13ID:OSNWgEHh シンタックスエラーになるのに、問題なく実行できる例
shopt -s expand_aliases
alias loop=for
loop i; do
echo "$i"
done
だからなんだって言われても困るけどwww
shopt -s expand_aliases
alias loop=for
loop i; do
echo "$i"
done
だからなんだって言われても困るけどwww
893デフォルトの名無しさん
2020/03/16(月) 05:05:37.60ID:OSNWgEHh キーワードを全部置き換えれば対象可能かな?
shopt -s expand_aliases
alias loop=for
alias begin=do
alias end=done
loop i; begin
echo "$i"
end
shopt -s expand_aliases
alias loop=for
alias begin=do
alias end=done
loop i; begin
echo "$i"
end
894デフォルトの名無しさん
2020/03/17(火) 01:19:59.84ID:tnhbC/l2 まだ初歩的なシェルスクリプトしか書けないがbashで一番変態的な記法ってなによ
空白を入れないfoo=barの時点で妙だし配列が括弧だらけでマンドクセとは思うが
空白を入れないfoo=barの時点で妙だし配列が括弧だらけでマンドクセとは思うが
895デフォルトの名無しさん
2020/03/17(火) 02:44:04.56ID:DZYZalLc さあなぁ、シェルスクリプトのコマンド=外部コマンド
だからファイル名につけられる文字や名前はすべて外部コマンド名として許されるべきだろうから
そうすると、やたらとコマンドを増やすわけにはいかないんだよね。
ABC = 123 とか書くと、ABCコマンドがあったらどうするんだ!?ってなるわけで、
ABC=123という風にファイル名にイコール使わないんじゃね?という前提にした
という理由があるから、そうなってるのわかるしなぁ。
ABC[123]とかいう外部コマンドだって作ろうと思えば作れるし
${aaaなんとか}シリーズが多いのも、既存の文法の拡張だけでやりたいからだろうし、
理由がわかれば、なっとくできるからなぁ。
んで、シェルスクリプトではそれ以外の拡張はしづらい運命にあるから、
逆に変態的な記法ってないで。変態な記法を作ろうと思っても作れない。
だからファイル名につけられる文字や名前はすべて外部コマンド名として許されるべきだろうから
そうすると、やたらとコマンドを増やすわけにはいかないんだよね。
ABC = 123 とか書くと、ABCコマンドがあったらどうするんだ!?ってなるわけで、
ABC=123という風にファイル名にイコール使わないんじゃね?という前提にした
という理由があるから、そうなってるのわかるしなぁ。
ABC[123]とかいう外部コマンドだって作ろうと思えば作れるし
${aaaなんとか}シリーズが多いのも、既存の文法の拡張だけでやりたいからだろうし、
理由がわかれば、なっとくできるからなぁ。
んで、シェルスクリプトではそれ以外の拡張はしづらい運命にあるから、
逆に変態的な記法ってないで。変態な記法を作ろうと思っても作れない。
896デフォルトの名無しさん
2020/03/17(火) 02:51:08.61ID:DZYZalLc シェルスクリプトの欠点?というわけでもないが、
仕様としてコマンド置換は最後に連続する改行が消えるから
var=$(func 1 2 3) みたいな形で、便利な関数を追加するのが
難しいんだよね。最後の改行が消えるから
いろんな機能が${varなんとか}の形で提供されてるのは、
これなら変数の代入だから最後の改行が消ないから
変態的な記法というならこれかなぁ、配列もそうだし
何でもかんでも${varなんとか}という形で機能拡張が行われてる
最近の ${parameter@operator} とかね
仕様としてコマンド置換は最後に連続する改行が消えるから
var=$(func 1 2 3) みたいな形で、便利な関数を追加するのが
難しいんだよね。最後の改行が消えるから
いろんな機能が${varなんとか}の形で提供されてるのは、
これなら変数の代入だから最後の改行が消ないから
変態的な記法というならこれかなぁ、配列もそうだし
何でもかんでも${varなんとか}という形で機能拡張が行われてる
最近の ${parameter@operator} とかね
897デフォルトの名無しさん
2020/03/17(火) 14:49:49.69ID:+LpQdzFa898デフォルトの名無しさん
2020/03/17(火) 20:33:42.42ID:WZhpPu/2 >>894
かっこがコマンドであるという点かなあ
かっこがコマンドであるという点かなあ
899デフォルトの名無しさん
2020/03/18(水) 01:29:14.04ID:9x4eFjJt900デフォルトの名無しさん
2020/03/19(木) 09:42:42.24ID:+0MAARlE exprについて教えてください。
現在tarで圧縮したファイルの末尾に数字をつける処理を使っています。
A=tarファイル名
B='expr = $A + 1'
tar czvf B 対象ファイル名
上の処理で実行すると、[整数でない引数]と表示されてしまい数字が付かないtarが出るのですが何故でしょうか。
現在tarで圧縮したファイルの末尾に数字をつける処理を使っています。
A=tarファイル名
B='expr = $A + 1'
tar czvf B 対象ファイル名
上の処理で実行すると、[整数でない引数]と表示されてしまい数字が付かないtarが出るのですが何故でしょうか。
901デフォルトの名無しさん
2020/03/19(木) 09:47:58.88ID:YUAN2W2v exprコマンドは廃止されました。
使ってはいけません。
使ってはいけません。
902デフォルトの名無しさん
2020/03/19(木) 10:02:09.16ID:QNV2kCYN tarファイル名 が [整数でない引数] だからというその表示のまま
他にもツッコミどころがありすぎ
他にもツッコミどころがありすぎ
903デフォルトの名無しさん
2020/03/19(木) 10:09:58.74ID:JDU05jIv expr の四則演算は、整数しか使えないのかも。
こういう感じ
echo `expr 100 + 20`
#=> 120
まあ、expr で検索して!
こういう感じ
echo `expr 100 + 20`
#=> 120
まあ、expr で検索して!
904デフォルトの名無しさん
2020/03/19(木) 10:25:57.68ID:YUAN2W2v だからさぁ、整数の計算ごときで
expr使うなって
expr使うなって
905デフォルトの名無しさん
2020/03/19(木) 11:40:21.72ID:Ul0ojJdl とりあえずでもいいだろ。俺は知ってるを押し付けすぎ
906デフォルトの名無しさん
2020/03/19(木) 12:30:37.63ID:awkeHjZR907デフォルトの名無しさん
2020/03/19(木) 13:14:01.73ID:JDU05jIv 文字列の連結なら、普通に続けて書けばよい
a=xyz
b=${a}11
echo $b
#=> xyz11
a=xyz
b=${a}11
echo $b
#=> xyz11
908デフォルトの名無しさん
2020/03/19(木) 14:30:55.18ID:awkeHjZR >>907
その例でいうと"11"が不明なのです。
tarを作成する際に同じ名前のtarがすでにあった場合は数字をつけたいんですよね。
すでに同一ファイル名があったら1をつける。
同一ファイル名1があったら2に変えるみたいな…。
名前の重複を避けたいのです
その例でいうと"11"が不明なのです。
tarを作成する際に同じ名前のtarがすでにあった場合は数字をつけたいんですよね。
すでに同一ファイル名があったら1をつける。
同一ファイル名1があったら2に変えるみたいな…。
名前の重複を避けたいのです
909デフォルトの名無しさん
2020/03/19(木) 15:05:23.65ID:JDU05jIv 名前が重ならない、temp ファイルを使えば?
mktemp コマンドを利用して、ユニークな名前の一時ファイルを作成する
それか、ファイル名に、タイムスタンプを含めれば?
1 とか、2 を付けるのは難しい。
1があれば、2にして、
2もあれば、3にして、
こういうループは難しい
mktemp コマンドを利用して、ユニークな名前の一時ファイルを作成する
それか、ファイル名に、タイムスタンプを含めれば?
1 とか、2 を付けるのは難しい。
1があれば、2にして、
2もあれば、3にして、
こういうループは難しい
910909
2020/03/19(木) 15:12:34.38ID:JDU05jIv911デフォルトの名無しさん
2020/03/19(木) 15:43:33.78ID:A3B3oNfE >>908
プログラミング的なスクリプトを書かないとだめだろう
通番をつけるのは今何がつけられていて
その中での最大が何でそれにプラス1するって処理が必要で
複雑になるから通番なしのものがあれば
日時入れるのが妥当なのではないかな
プログラミング的なスクリプトを書かないとだめだろう
通番をつけるのは今何がつけられていて
その中での最大が何でそれにプラス1するって処理が必要で
複雑になるから通番なしのものがあれば
日時入れるのが妥当なのではないかな
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 【ネット民のツッコミ】立憲・野田代表の「事実上の撤回」発言がトレンド、「高市さんそんな事は言ってない」「流石に無理あるだろw」 [1ゲットロボ★]
- 【国際法を無視】日本での「中華人民共和国に台湾問題を論じる資格なし」との声に 中国外交部が厳しく反論… ★2 [BFU★]
- 【金沢地裁】「風俗嬢に着せようと」南砺の高校で女子バレー部のユニホームを窃盗した男が説明 検察側、拘禁刑4年を求刑 [nita★]
- 【文春】元TOKIO・国分太一(51)「女性スタッフ2名への“わいせつ事案”」日テレ事情聴取の全貌が分かった! ★5 [Ailuropoda melanoleuca★]
- 【工作員】「X」のアカウント所在地公開機能が暴いた世論操作の実態 MAGA支持著名アカウントの多くが米国外から運営 日本にも波及 ★3 [ごまカンパチ★]
- 首相答弁「スパイ防止法、外国代理人登録法、ロビー活動公開法などについて速やかに法案を策定する」 [1ゲットロボ★]
- 終焉を待ち望む遊戯王やってる奴スレ
- 【高市悲報】中国「ふにゃふにゃ言いながら、時が自然に解決するのを期待する—そんなジャップ流は決して通用しない」 [115996789]
- 【悲報】ゼレンスキー大統領、和平案に大筋合意 ホンコンみたいなウヨ芸人を大統領にするとこうなる [455031798]
- キャバクラ嬢がほぼ全レス
- ちんちん剥き剥き体操の女版、存在していた…女の子おまたケアはビラビラを [776365898]
- 🇨🇳🔥香港大規模火災、最新情報。少なくとも36人死亡、279人行方不明 [718678614]
