シェルスクリプト・ バッチファイル・コマンドプロシージャなどの
シェルで使われてる言語に関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
関連スレ
【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1489207631/
前スレ シェルスクリプト総合 その28
https://mevius.5ch.net/test/read.cgi/tech/1532397676/
シェルスクリプト総合 その29
■ このスレッドは過去ログ倉庫に格納されています
2018/08/25(土) 19:49:00.43ID:9FNycoly
2018/08/25(土) 19:51:08.05ID:9FNycoly
お約束
・シェルスクリプト・バッチファイル・PowerShell・コマンドプロシージャなどのシェルで動く言語のスレです
Bourne ShellもしくはPOSIX準拠のsh可換シェルの場合はそのように明記してください
特定のシェル(cmd, bash, zsh, ksh, (d)ash, yash, posh, fish, (t)csh)などの専用機能に依存する場合は明示しましょう。
OS X, GNU/Linuxユーザーは/bin/shの実体がbashなので*特に*注意(自覚なきbashism---シバンが#!/bin/shなのにbashに依存する構文を使っていませんか?)。
ただしDebian, Ubuntuなどでは/bin/shの実体はPOSIX sh互換のdashですのであまり気にしないでも大丈夫です。
FreeBSDユーザーは/bin/shの実体がashなので注意。
Solaris, OpenBSDユーザーは/bin/shの実体がkshなので注意。
csh/tcshでのシェルスクリプトは*まったく推奨しません*。
(参考URL: http://www.speech-lab.org/~hiroki/csh-whynot.euc)
・sh系の場合はPOSIXに準拠しましょう
有用なリンクはhttps://en.wikipedia.org/wiki/POSIXにまとめられています。
最新の仕様はこちらへ: http://pubs.opengroup.org/onlinepubs/9699919799/
(左上の「Shell & Utilities」から各コマンドやファイルの仕様を参照することができます)
・Version 7 UNIXのsh(1)に一番近いのはOpenSolaris由来のHeirloom sh、次点でDebianなどに搭載されているDash shell
Heirloom sh: http://heirloom.sourceforge.net/sh.html
Dash shell: http://gondor.apana.org.au/~herbert/dash/
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります
Manページや各種リンク(http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.htmlなど)を見ましょう。
apropos(1)ないしはman(1)の-kオプションでそれらしい単語による簡単な検索もできます。
・ワイルドカードは正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
・シェルスクリプト・バッチファイル・PowerShell・コマンドプロシージャなどのシェルで動く言語のスレです
Bourne ShellもしくはPOSIX準拠のsh可換シェルの場合はそのように明記してください
特定のシェル(cmd, bash, zsh, ksh, (d)ash, yash, posh, fish, (t)csh)などの専用機能に依存する場合は明示しましょう。
OS X, GNU/Linuxユーザーは/bin/shの実体がbashなので*特に*注意(自覚なきbashism---シバンが#!/bin/shなのにbashに依存する構文を使っていませんか?)。
ただしDebian, Ubuntuなどでは/bin/shの実体はPOSIX sh互換のdashですのであまり気にしないでも大丈夫です。
FreeBSDユーザーは/bin/shの実体がashなので注意。
Solaris, OpenBSDユーザーは/bin/shの実体がkshなので注意。
csh/tcshでのシェルスクリプトは*まったく推奨しません*。
(参考URL: http://www.speech-lab.org/~hiroki/csh-whynot.euc)
・sh系の場合はPOSIXに準拠しましょう
有用なリンクはhttps://en.wikipedia.org/wiki/POSIXにまとめられています。
最新の仕様はこちらへ: http://pubs.opengroup.org/onlinepubs/9699919799/
(左上の「Shell & Utilities」から各コマンドやファイルの仕様を参照することができます)
・Version 7 UNIXのsh(1)に一番近いのはOpenSolaris由来のHeirloom sh、次点でDebianなどに搭載されているDash shell
Heirloom sh: http://heirloom.sourceforge.net/sh.html
Dash shell: http://gondor.apana.org.au/~herbert/dash/
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります
Manページや各種リンク(http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.htmlなど)を見ましょう。
apropos(1)ないしはman(1)の-kオプションでそれらしい単語による簡単な検索もできます。
・ワイルドカードは正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
2018/08/25(土) 20:06:56.60ID:A3V5N+C6
ここは全てのOSのシェルスクリプトを統合的に扱います。
sh系の話はいかにて取り扱います
【POSIX】 sh系互換 シェルスクリプトスレ
https://mevius.5ch.net/test/read.cgi/tech/1535195112/
sh系の話はいかにて取り扱います
【POSIX】 sh系互換 シェルスクリプトスレ
https://mevius.5ch.net/test/read.cgi/tech/1535195112/
2018/08/25(土) 20:12:10.01ID:tfF8aOe1
>>1
前スレまだ200番台なんですが…
前スレまだ200番台なんですが…
2018/09/15(土) 20:48:25.04ID:iaCHT03n
次スレの29はワッチョイ有りにするのでこのスレは利用禁止で
6デフォルトの名無しさん
2018/12/23(日) 08:00:40.84ID:W0WvAA71 sedだと簡単に動く一文字以上の半角スペースを一文字スペースに置換するコレ
echo "$strings" | sed -E 's/ {1,}/ /g'
bashだとどーしてもうまく動かず次のように[]で囲ってやるとなんとか全連続スペースじゃなく一部
だけが置換できた。
${strings// [ \{1,\}]/ }
それ以上どうしようもなかったので、次のような関数を作った
function Rep2One(){
local str=$1
local chr=$2
while :
do
str="${str//$chr$chr/$chr}"
if [[ ! $str =~ $chr$chr ]]; then
break
fi
done
echo "$str"
}
srings=`Rep2One "$strings" " "`
これで任意の2文字以上の連続を1文字に置換できたが、
sedみたいに一発でかっこよく記述できない?
至る所でbashからsedやgrep起動してたんだが、
bashのなかでできることはbashだけでやった方が大分速いことがわかったんで
なんとかbashの正規表現だけでやりたい
echo "$strings" | sed -E 's/ {1,}/ /g'
bashだとどーしてもうまく動かず次のように[]で囲ってやるとなんとか全連続スペースじゃなく一部
だけが置換できた。
${strings// [ \{1,\}]/ }
それ以上どうしようもなかったので、次のような関数を作った
function Rep2One(){
local str=$1
local chr=$2
while :
do
str="${str//$chr$chr/$chr}"
if [[ ! $str =~ $chr$chr ]]; then
break
fi
done
echo "$str"
}
srings=`Rep2One "$strings" " "`
これで任意の2文字以上の連続を1文字に置換できたが、
sedみたいに一発でかっこよく記述できない?
至る所でbashからsedやgrep起動してたんだが、
bashのなかでできることはbashだけでやった方が大分速いことがわかったんで
なんとかbashの正規表現だけでやりたい
76
2018/12/23(日) 08:07:43.66ID:W0WvAA71 すみません前スレに移動します
2018/12/23(日) 08:14:13.74ID:yUjQiXy1
なんでそんなに正規表現に拘るのかわからん
#!/bin/sh
while IFS= read -r line; do
echo $line
done
#!/bin/sh
while IFS= read -r line; do
echo $line
done
2019/01/06(日) 10:27:56.70ID:vAbXyCSc
/ +/ /
でよくね?
でよくね?
2019/01/07(月) 03:14:23.39ID:Z5VMKaqE
2019/02/08(金) 12:14:05.84ID:OGIJJ+v/
age
2019/02/08(金) 15:46:28.45ID:mhRJFjKM
win10にMSYS2入れてみた
bashバッチ作ってcd `dirname $0`書いて実行したら
Cドライブだと動くのに、Dドライブで実行すると動かん
あとなぜかlookの検索が効かない
bashバッチ作ってcd `dirname $0`書いて実行したら
Cドライブだと動くのに、Dドライブで実行すると動かん
あとなぜかlookの検索が効かない
2019/02/08(金) 22:08:55.85ID:VZqJ7QJN
なんで同じ番号のスレが3つもあるの?
14デフォルトの名無しさん
2019/02/08(金) 23:25:25.51ID:0dQnaPPd dirname コマンドや、環境変数、$0 の意味でも調べれば?
2019/02/22(金) 19:14:15.85ID:iyc3D5GM
awkで、リダイレクト先のファイルが存在するかどうかの判別は、
どうやって書いたら良いですか?
どうやって書いたら良いですか?
2019/02/23(土) 00:38:49.67ID:KVnLTHAG
予めgetlineが返す値チェックしておけばいいんじゃない
17デフォルトの名無しさん
2019/02/23(土) 13:41:37.65ID:9pS68leH getlineは入力だよな?出力の話してるんじゃないの?
2019/02/23(土) 13:56:04.31ID:VtbudUFf
シェルスクリプトでもええんか?
シェルスクリプトのスレだし
シェルスクリプトのスレだし
2019/02/23(土) 14:45:51.45ID:DQY5g4De
file_name="a.txt"
if [ -f "$file_name" ]
then
exit 1
fi
上のように、ファイルがあるかどうかを、BEGIN { } に書けば?
終了コード0 は正常終了で、
1以上の終了コードは、異常終了
if [ -f "$file_name" ]
then
exit 1
fi
上のように、ファイルがあるかどうかを、BEGIN { } に書けば?
終了コード0 は正常終了で、
1以上の終了コードは、異常終了
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【芸能】デパートで見つけたランドセルが衝撃価格! つまみ枝豆「どこかで規制しないと」に共感の声殺到 「全て同感」「高すぎますね」 [冬月記者★]
- 日本語が話せない「外国籍」の子が急増中、授業がストップ、教室から脱走も…先生にも大きな負担「日本語支援」追いつかず★2 [七波羅探題★]
- 「暖房が使えない」「食費が高くて子どもの栄養が…」 物価高に苦しむ子育て世帯、政府に期待する支援は [蚤の市★]
- 【速報】年収の壁の自民案判明、26年は168万円 [蚤の市★]
- 「ワールドトリガー」原作1話から完全新作アニメ化、よりパワーアップした1stシーズンとして [爆笑ゴリラ★]
- 自ら「パンセクシュアル」だと明かし、東由貴・東京都議(立憲民主)が「パートナーシップ」施策の充実求める:東京新聞 [少考さん★]
- 【悲報】高市政権、中国軍機のレーダー照射について国際社会に発信へ [115996789]
- 中国GDP年率5%に上方修正へ、一方日本は景気は緩やかに回復してるのにマイナス2.3%に転落 [709039863]
- 高市首相「私は高校生扶養控除の縮減反対だけど、自民党の一部議員が勝手に減らそうとしてるの…🥺」 [931948549]
- 【高市速報】中国、世界の敵になる [308389511]
- ニューヨークタイムスが選んだ世界最高の袋麺に高市も納得wwwwwwwwwwwww [784715804]
- 高市が中国に強気な理由、判明。「私はトランプさんに好かれてるから米国を動かせる💕」という自信だった。 [153490809]
