以下bash限定です。(shでは動きません。)
execを使ってb.txtをファイルディスクリプタ指定でオープンしておいて(「exec 9< b.txt」の部分)、
a.txtの読み込みに合わせてb.txtをreadを-u オプション付きでファイルディスクリプタ指定で読み込めば(「read -u 9 line」の部分)良いです。
bash
1#! /bin/bash
2
3rm -f c.txt
4
5exec 9< b.txt
6while read line; do
7 a=$line
8 read -u 9 line
9 b=$line
10 if [ $a -eq $b ]; then
11 echo - >>"c.txt"
12 elif [ $a -gt $b ]; then
13 echo ← >>"c.txt"
14 else
15 echo → >>"c.txt"
16 fi
17done < a.txt
ついでにa.txtの読み込みもb.txtの読み込みと同様に変更すると次のようになります。
bash
1#! /bin/bash
2
3rm -f c.txt
4
5exec 8< a.txt
6exec 9< b.txt
7while read -u 8 line; do
8 a=$line
9 read -u 9 line
10 b=$line
11 if [ $a -eq $b ]; then
12 echo - >>"c.txt"
13 elif [ $a -gt $b ]; then
14 echo ← >>"c.txt"
15 else
16 echo → >>"c.txt"
17 fi
18done
19
以下実行結果です。
terminal
1$ cat a.txt
21
32
43
54
65
7
8$ cat b.txt
95
104
113
122
131
14
15$ ./hoge2.bash
16$ cat c.txt
17→
18→
19-
20←
21←
22
23$ ./hoge3.bash
24$ cat c.txt
25→
26→
27-
28←
29←
30
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/24 11:08