- シェルスクリプト総合 その30
348 :デフォルトの名無しさん[sage]:2019/07/23(火) 15:21:00.97 ID:vatz3/hX - シェルスクリプトで引数が整数であることを判定する可搬で高速な方法ってなんだろう
思い付いたのは isint() { case "$1" in [0-9][0-9]*) printf '%d\n' $1 ;; *) return 22 ;; esac } …ところで$1がないときは標準入力から値を取得するっていう操作ってどう実装するんだろう?
|
- 文字コード総合スレ Part12
528 :デフォルトの名無しさん[sage]:2019/07/23(火) 15:56:55.39 ID:vatz3/hX - https://github.com/qntm/base65536
↑Unicodeの基本多言語面を使ったエンコード方法w
|
- シェルスクリプト総合 その30
357 :348[sage]:2019/07/23(火) 16:11:28.72 ID:vatz3/hX - みなさんありがとうございます。
↓助言を参考にさしてもらってこういう形にしました。 isint() { set -- "$1" case ${1#-} in ''|*[!0-9]*) return 22 ;; *) true ;; esac } 「$1が設定されていなければ標準入力を$1に」というのはシェルスクリプトでは 実現が難しそうなので諦めます。
|
- シェルスクリプト総合 その30
359 :348[sage]:2019/07/23(火) 16:15:37.53 ID:vatz3/hX - ……と思いましたが良い感じの構文を思い付きました。
isint() { set -- "${1:-"$(cat)"}" case ${1#-} in ''|*[!0-9]*) return 22 ;; *) true ;; esac } これでどうでしょうかね。もし$1が設定されていなければcat(1)が実行されて cat(1)には引数が渡っていない(この時は$1が設定されていない)ので If no file operands are specified, the standard input shall be used. (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/cat.html) に従って標準入力が読み込まれてset -- 〈標準入力の内容〉となって$1に標準入力が設定される。
|
- シェルスクリプト総合 その30
362 :デフォルトの名無しさん[sage]:2019/07/23(火) 17:17:45.59 ID:vatz3/hX - >>361
申し訳ないです。完全に見落してました。
|