シェルスクリプト総合 その32

■ このスレッドは過去ログ倉庫に格納されています
2019/10/25(金) 00:08:45.53ID:6btPTvif
シェルスクリプトに関する総合スレッドです。

全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。

シェルスクリプト総合 その31
https://mevius.5ch.net/test/read.cgi/tech/1565446670/
2019/10/25(金) 00:09:51.40ID:6btPTvif
・特記なき場合、POSIX準拠シェルが既定です
 POSIX準拠シェルとBourneシェルの区別はついていますか?BourneシェルはUNIXで過去広く使われたシェルで
 多くの亜種が存在します。Bourneシェルの後継で標準化されたものがPOSIX準拠シェルです
  参考 https://unix.stackexchange.com/questions/145522/
 POSIX準拠シェルは(d)ash, bash, zsh, (m)ksh, yash, posh, (p)boshです
 特定のシェル(特にPOSIX準拠シェルではないfish, (t)csh等)の専用機能に依存する場合は明示しましょう
・デフォルトシェルのシバンはBourneシェル時代からの伝統で#!/bin/shを使用します。ただしその実体はOSによって様々です
  Debian,Ubuntu … dash
  CentOS … bash
  FreeBSD … ash
  Solaris,OpenBSD … ksh
  macOS … 改変版bash
  android … mksh
 自覚なきbashism、シバンが#!/bin/shなのにbashに依存する構文を使っていませんか?#!/bin/shを使うならシェル依存は厳禁です
 macOSのbashはSingle UNIX Specificationに準拠するために改変されており一部動作が異なるので注意しましょう
・Bourneシェルは既にレガシーです
 歴史的資料 https://www.in-ulm.de/~mascheck/
 Bourneシェル≒Version 7 UNIXのshに一番近いのはOpenSolaris由来のHeirloom Bourne Shell、次点でSchily Bourne Shellのoboshです
  Heirloom Bourne Shell: sh http://heirloom.sourceforge.net/sh.html
  Schily Bourne Shell: obosh http://schilytools.sourceforge.net/bosh.html
・POSIXに準拠しましょう
 有用なリンクは https://en.wikipedia.org/wiki/POSIX にまとめられています
 最新の仕様はこちら http://pubs.opengroup.org/onlinepubs/9699919799/ (左上の「Shell & Utilities」から)
・csh/tcshでのシェルスクリプトは*まったく推奨しません*
  参考 http://www.speech-lab.org/~hiroki/csh-whynot.euc
・Linux/UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。Manページや各種リンクを見ましょう
 aproposやman -kでそれらしい単語による簡単な検索もできます
・ワイルドカードは正規表現ではありません
 正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
2019/10/25(金) 00:10:25.47ID:6btPTvif
関連スレ

【Bash】Windows Subsystem for Linux【WSL】6
https://mao.5ch.net/test/read.cgi/linux/1560665525/

Bashでプログラミング [転載禁止](c)2ch.net
https://mao.5ch.net/test/read.cgi/linux/1443885102/

シェルスクリプト総合 その28
https://mevius.5ch.net/test/read.cgi/unix/1533154936/

zsh その7
https://mevius.5ch.net/test/read.cgi/unix/1337844883/

【POSIX】UNIXプログラミング【BSD】 [転載禁止](c)2ch.net
https://mevius.5ch.net/test/read.cgi/unix/1443103705/
2019/10/25(金) 00:31:55.29ID:pN2Np6rx
隣で仕事してる他社のチームが、新人にコマンドプロンプトのことをMS-DOSって教えてて笑える
2019/10/25(金) 02:33:05.14ID:IsBuDbrd
業界内で技術用語を正確に把握している人が果たして何人いるんだろうか?
2019/10/25(金) 15:16:28.60ID:L9QL6FGO
コマンドプロンプトのことをなんと教えるか?

× MS-DOSのようなもの
○ ハドソンのゲーム、バニーガール殺人事件のようなもの
https://middle-edge.jp/articles/bFwpM
2019/10/25(金) 18:14:14.63ID:ggZuLyhL
Win9xまではコマンドプロンプトのアイコンがMSDOSだったんだぜ
8デフォルトの名無しさん
垢版 |
2019/10/25(金) 19:44:43.63ID:f89Z34lq
あれって MS-DOS プロンプトって名前じゃなかった?
Windows NT の方はコマンドプロンプト。
2019/10/25(金) 21:05:38.68ID:AWtm0G4L
先輩がコマプロとか言っててキモかったな(´・ω・`)
2019/10/25(金) 21:16:19.65ID:Qd2+OiXZ
そういう誰も効かない変な略し方ってどうやって生まれるんだろうね?
俺の知り合いは、AMDをアーマーデーとか言ってた。なんで伸ばすん?
11デフォルトの名無しさん
垢版 |
2019/10/25(金) 23:38:51.04ID:9ZGj0mXw
ドイツ語読みだとしてもマーがおかC
2019/10/25(金) 23:59:50.22ID:6xV0MpQs
そういえばもうDOSプロンプトって言い方しなくなったな
2019/10/26(土) 00:00:29.42ID:hrL9FWKp
XP以降しか使ったことがないって人も増えたからね
2019/10/26(土) 16:02:34.81ID:5U6kcXeJ
MS-DOS の話をしても現在の Windows で再現できないという理由で嘘つき呼ばわりされる。
15デフォルトの名無しさん
垢版 |
2019/10/26(土) 16:33:49.92ID:+M+pJ73c
TRUE=$([ 0 = 0 ];echo $?)
FALSE=$([ ! $TRUE ];echo $?)

FLAG=$TRUE or $FALSE


↑クソコード

理由
true / false を使えばいい
true / false がない環境があるかもという理屈なら、 [ がない環境もあるかもと考えろ
set -e のときに動かない
[ ! $FALSE ]; echo $? が 1($FALSEと同じ値)を返すことに気づいていない
サブシェルを使うのもアホらしい

たったこれだけのコードに、こんだけのツッコミができるとはw
16デフォルトの名無しさん
垢版 |
2019/10/26(土) 16:35:45.72ID:+M+pJ73c
TRUE=0
FALSE=1

と書いたほうが遥かにマシだが、
これでも、[ $TRUE ] も [ $FALSE ] も共に 0(成功)を返すので
なんだかなーって感じw
17デフォルトの名無しさん
垢版 |
2019/10/26(土) 16:38:37.76ID:+M+pJ73c
>>15は [ ! $TRUE ] ← こういうコードを書いてますが、
つまりこういうことですよ

FLAG=$FALSE

if [ $FLAG ]; then
 echo ここが実行されるwww
fi
18デフォルトの名無しさん
垢版 |
2019/10/26(土) 16:49:43.23ID:+M+pJ73c
変数($FLAG)に、0 or 1 を入れてる人は、

こういう書き方をしたいかんのやで
if [ $FLAG ]; then
if [ ! $FLAG ]; then

if [ $FLAG -eq $TRUE ]; then とか
if [ $FLAG -ne $TRUE ]; then って書かないといかん
2019/10/26(土) 17:19:51.21ID:swDBEFOl
if $FLAG ; then

書き方も知らんらしいw
20デフォルトの名無しさん
垢版 |
2019/10/26(土) 20:30:57.76ID:+M+pJ73c
0: コマンドが見つかりません

www
21デフォルトの名無しさん
垢版 |
2019/10/26(土) 21:19:29.63ID:axNoNf0W
https://stackoverflow.com/questions/2953646/how-can-i-declare-and-use-boolean-variables-in-a-shell-script
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況