シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
シェルスクリプト総合 その31
https://mevius.5ch.net/test/read.cgi/tech/1565446670/
探検
シェルスクリプト総合 その32
レス数が900を超えています。1000を超えると表示できなくなるよ。
2019/10/25(金) 00:08:45.53ID:6btPTvif
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
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が出るのですが何故でしょうか。
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 「脅迫だ」国分太一に同情論 音声データ削除要求など日テレの対応を疑問視する声ネットに噴出「それこそコンプラ違反では」★2 [muffin★]
- 【国際法を無視】日本での「中華人民共和国に台湾問題を論じる資格なし」との声に 中国外交部が厳しく反論… ★2 [BFU★]
- 【工作員】「X」のアカウント所在地公開機能が暴いた世論操作の実態 MAGA支持著名アカウントの多くが米国外から運営 日本にも波及 ★3 [ごまカンパチ★]
- 生クリームだけの真っ白なクリスマスケーキ 大手メーカーが販売、その理由は…フルーツなしで価格は半額以下に ★3 [おっさん友の会★]
- 【文春】元TOKIO・国分太一(51)「女性スタッフ2名への“わいせつ事案”」日テレ事情聴取の全貌が分かった! ★5 [Ailuropoda melanoleuca★]
- 【芸能】日本のファンも悲鳴、香港トップスターが来日コンサートを突如中止 「早く政府間で解決を」運営会社の切実な訴え [冬月記者★]
- 中国外務省「全く不十分だ。ごまかすような手口を使うべきではない」高市答弁を批判 [834922174]
- 【急募】性欲抜きのまんこの魅力 [904880432]
- 【悲報】参政党応援の外国製ボット、発見されるwwww
- 高市応援団「都合よく解釈するな」「撤回すると言ってない」「中国と断交」「撤回する必要ない」「答弁変わってない」「武力行使しろ」 [931948549]
- 松ごっつって番組を覚えてるのいる?
- ヤンジャン新人漫画大賞、入賞作品のAI絵疑惑で大荒れ😄😄😄 高市早苗要素あり [175344491]
