![シェルスクリプトに数字がある場合、その数字の1桁にどのようにアクセスしますか? [閉鎖]](https://linux33.com/image/149065/%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%AB%E6%95%B0%E5%AD%97%E3%81%8C%E3%81%82%E3%82%8B%E5%A0%B4%E5%90%88%E3%80%81%E3%81%9D%E3%81%AE%E6%95%B0%E5%AD%97%E3%81%AE1%E6%A1%81%E3%81%AB%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E9%96%89%E9%8E%96%5D.png)
シェルスクリプトで各番号を個別に参照してアクセスできるようにしたいです。どうすればいいですか?
答え1
数字は基本的に次のようになるため、文字列と考えることができます*:
$ number=42
$ echo "${number:1:1}"
2
$ echo "${number:0:1}"
4
*変数を整数(例:Bash)として宣言しない限り、この場合10進数に変換これで文字列として扱うことができます。たとえば、8進数は次のようになります。
$ declare -i number=042
$ echo "${number:0:1}"
3
$ echo "${number:1:1}"
4
これらのどれも *nix シェルで直接サポートされていない 10 進数または浮動小数点数では機能しません。そのために調査をしたいですbc
。
あなたもできます文字列を文字配列として扱うさまざまな方法で。
答え2
$ number=12345
$ echo $number, length ${#number}
12345, length 5
$ echo ${number:0:1}
1
$ echo ${number:0:2}
12
$ echo ${number:0:3}
123
$ echo ${number:0:4}
1234
$ echo ${number:0:5}
12345
$ echo ${number:1:4}
2345
$ echo ${number:2:3}
345
$ echo ${number:3:2}
45
$ echo ${number:4:1}
5
$ echo ${number:1}
2345
$ echo ${number:2}
345
$ echo ${number:3}
45
$ echo ${number:4}
5
$ echo ${number: -1}
5
$ echo ${number: -2}
45
$ echo ${number: -3}
345
$ echo ${number: -4}
2345
$ echo ${number:0:-4}
1
$ echo ${number:0:-3}
12
$ echo ${number:0:-2}
123
$ echo ${number:0:-1}
1234
これらの可能なすべての組合せは${parameter:offset:length}
幾分混乱する可能性がある。