File: D1440.suppress-locale-error.sh

package info (click to toggle)
ble.sh 0.4.0~git20250321.d4c812b-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 12,516 kB
  • sloc: sh: 71,367; awk: 1,316; cpp: 750; ansic: 186; javascript: 43; makefile: 35
file content (46 lines) | stat: -rw-r--r-- 1,288 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/bin/bash

{
  LC_CTYPE=pt_PT.UTF-8
} 2>/dev/null

checkA1() { local LC_ALL= LC_CTYPE=C; builtin read -t 0; } 2>/dev/null
checkB1() { local LC_ALL= LC_CTYPE=C; builtin eval 'echo "${#a}"'; } 2>/dev/null

# x [bash-bug] この方法だと LC_CTYPE が反映されない。
checkA2() { LC_ALL= LC_CTYPE=C builtin read -t 0; } 2>/dev/null
checkB2() { LC_ALL= LC_CTYPE=C eval 'echo "${#a}"'; } 2>/dev/null

# checkB3
# - この方法だと余分に関数呼び出しが入る
# o 然し、unlocal は共通関数なのでその場で定義するのは一つの関数だけで良い。
# - 終了ステータスが意味を持つ場合には一旦ステータスを保存しなければならない。
checkB3() {
  local LC_ALL= LC_CTYPE=C
  echo "${#a}"
  ble/util/unlocal LC_CTYPE LC_ALL
} 2>/dev/null

# checkB4
# - これは動くが、これも余分に関数呼び出しが入る。
# - その場で関数を複数定義しなければならない。
checkB4.impl() { local LC_ALL= LC_CTYPE=C; echo "${#a}"; }
checkB4() {
  checkB4.impl 2>/dev/null
}

# x bash-4.1 以下で LC_CTYPE が反映されない。
checkB5.impl() { echo "${#a}"; }
checkB5() {
  LC_ALL= LC_CTYPE=C checkB5.impl 2>/dev/null
}

a=あいう
echo A
# checkA1
# checkB1
#checkA2
#checkB3
#checkB4
checkB5
echo Z