우리 사무실에 DNS 문제가 있어서 IP 주소로 일부 서버를 찾아보았습니다.
for i in `seq 14 15`; do echo "10.10.10.$i" ; wget "10.10.10.$i" ; done
10.10.10.14 및 10.10.10.15로 wget을 호출할 예정입니다.
대조적으로, wget은 , 10.10.10.(some weird string which appears to be the expansion of $PS1)
등 으로 호출됩니다.10.10.10.$
10.10.10.for
만약 내가한다면
for i in `seq 14 15`; do echo "10.10.10.$i" ; done
그러면 결과는 예상대로인 것 같습니다.
10.10.10.14
10.10.10.15
그러나 이것은 환상입니다.
$ for i in `seq 14 15` ; do echo $i ; done | hexdump -C
00000000 1b 5d 30 3b 43 53 21 40 3a 2f 74 6d 70 20 24 20 |.]0;CS!@:/tmp $ |
00000010 66 6f 72 20 69 20 69 6e 20 60 73 65 71 20 31 34 |for i in `seq 14|
00000020 20 31 35 60 20 3b 20 64 6f 20 65 63 68 6f 20 20 | 15` ; do echo |
00000030 24 69 20 3b 20 64 6f 6e 65 20 7c 20 68 65 78 64 |$i ; done | hexd|
00000040 75 6d 70 20 2d 43 07 1b 5d 30 3b 43 53 21 40 3a |ump -C..]0;CS!@:|
00000050 2f 74 6d 70 20 24 20 66 6f 72 20 69 20 69 6e 20 |/tmp $ for i in |
00000060 60 73 65 71 20 31 34 20 31 35 60 20 3b 20 64 6f |`seq 14 15` ; do|
00000070 20 65 63 68 6f 20 20 24 69 20 3b 20 64 6f 6e 65 | echo $i ; done|
00000080 20 7c 20 68 65 78 64 75 6d 70 20 2d 43 07 1b 5d | | hexdump -C..]|
00000090 30 3b 43 53 21 40 3a 2f 74 6d 70 0a 1b 5d 30 3b |0;CS!@:/tmp..]0;|
000000a0 43 53 21 40 3a 2f 74 6d 70 20 24 20 66 6f 72 20 |CS!@:/tmp $ for |
000000b0 69 20 69 6e 20 60 73 65 71 20 31 34 20 31 35 60 |i in `seq 14 15`|
000000c0 20 3b 20 64 6f 20 65 63 68 6f 20 20 24 69 20 3b | ; do echo $i ;|
000000d0 20 64 6f 6e 65 20 7c 20 68 65 78 64 75 6d 70 20 | done | hexdump |
000000e0 2d 43 07 1b 5d 30 3b 43 53 21 40 3a 2f 74 6d 70 |-C..]0;CS!@:/tmp|
000000f0 20 24 20 66 6f 72 20 69 20 69 6e 20 60 73 65 71 | $ for i in `seq|
00000100 20 31 34 20 31 35 60 20 3b 20 64 6f 20 65 63 68 | 14 15` ; do ech|
00000110 6f 20 20 24 69 20 3b 20 64 6f 6e 65 20 7c 20 68 |o $i ; done | h|
00000120 65 78 64 75 6d 70 20 2d 43 07 24 0a 1b 5d 30 3b |exdump -C.$..]0;|
00000130 43 53 21 40 3a 2f 74 6d 70 20 24 20 66 6f 72 20 |CS!@:/tmp $ for |
00000140 69 20 69 6e 20 60 73 65 71 20 31 34 20 31 35 60 |i in `seq 14 15`|
00000150 20 3b 20 64 6f 20 65 63 68 6f 20 20 24 69 20 3b | ; do echo $i ;|
00000160 20 64 6f 6e 65 20 7c 20 68 65 78 64 75 6d 70 20 | done | hexdump |
00000170 2d 43 07 1b 5d 30 3b 43 53 21 40 3a 2f 74 6d 70 |-C..]0;CS!@:/tmp|
00000180 20 24 20 66 6f 72 20 69 20 69 6e 20 60 73 65 71 | $ for i in `seq|
00000190 20 31 34 20 31 35 60 20 3b 20 64 6f 20 65 63 68 | 14 15` ; do ech|
000001a0 6f 20 20 24 69 20 3b 20 64 6f 6e 65 20 7c 20 68 |o $i ; done | h|
000001b0 65 78 64 75 6d 70 20 2d 43 07 66 6f 72 0a 1b 5d |exdump -C.for..]|
000001c0 30 3b 43 53 21 40 3a 2f 74 6d 70 20 24 20 66 6f |0;CS!@:/tmp $ fo|
000001d0 72 20 69 20 69 6e 20 60 73 65 71 20 31 34 20 31 |r i in `seq 14 1|
000001e0 35 60 20 3b 20 64 6f 20 65 63 68 6f 20 20 24 69 |5` ; do echo $i|
000001f0 20 3b 20 64 6f 6e 65 20 7c 20 68 65 78 64 75 6d | ; done | hexdum|
00000200 70 20 2d 43 07 1b 5d 30 3b 43 53 21 40 3a 2f 74 |p -C..]0;CS!@:/t|
00000210 6d 70 20 24 20 66 6f 72 20 69 20 69 6e 20 60 73 |mp $ for i in `s|
00000220 65 71 20 31 34 20 31 35 60 20 3b 20 64 6f 20 65 |eq 14 15` ; do e|
00000230 63 68 6f 20 20 24 69 20 3b 20 64 6f 6e 65 20 7c |cho $i ; done ||
00000240 20 68 65 78 64 75 6d 70 20 2d 43 07 69 0a 1b 5d | hexdump -C.i..]|
00000250 30 3b 43 53 21 40 3a 2f 74 6d 70 20 24 20 66 6f |0;CS!@:/tmp $ fo|
00000260 72 20 69 20 69 6e 20 60 73 65 71 20 31 34 20 31 |r i in `seq 14 1|
00000270 35 60 20 3b 20 64 6f 20 65 63 68 6f 20 20 24 69 |5` ; do echo $i|
00000280 20 3b 20 64 6f 6e 65 20 7c 20 68 65 78 64 75 6d | ; done | hexdum|
00000290 70 20 2d 43 07 1b 5d 30 3b 43 53 21 40 3a 2f 74 |p -C..]0;CS!@:/t|
000002a0 6d 70 20 24 20 66 6f 72 20 69 20 69 6e 20 60 73 |mp $ for i in `s|
000002b0 65 71 20 31 34 20 31 35 60 20 3b 20 64 6f 20 65 |eq 14 15` ; do e|
000002c0 63 68 6f 20 20 24 69 20 3b 20 64 6f 6e 65 20 7c |cho $i ; done ||
000002d0 20 68 65 78 64 75 6d 70 20 2d 43 07 69 6e 0a 1b | hexdump -C.in..|
000002e0 5d 30 3b 43 53 21 40 3a 2f 74 6d 70 20 24 20 66 |]0;CS!@:/tmp $ f|
000002f0 6f 72 20 69 20 69 6e 20 60 73 65 71 20 31 34 20 |or i in `seq 14 |
00000300 31 35 60 20 3b 20 64 6f 20 65 63 68 6f 20 20 24 |15` ; do echo $|
00000310 69 20 3b 20 64 6f 6e 65 20 7c 20 68 65 78 64 75 |i ; done | hexdu|
00000320 6d 70 20 2d 43 07 1b 5d 30 3b 43 53 21 40 3a 2f |mp -C..]0;CS!@:/|
00000330 74 6d 70 20 24 20 66 6f 72 20 69 20 69 6e 20 60 |tmp $ for i in `|
00000340 73 65 71 20 31 34 20 31 35 60 20 3b 20 64 6f 20 |seq 14 15` ; do |
00000350 65 63 68 6f 20 20 24 69 20 3b 20 64 6f 6e 65 20 |echo $i ; done |
00000360 7c 20 68 65 78 64 75 6d 70 20 2d 43 07 60 73 65 || hexdump -C.`se|
00000370 71 0a 1b 5d 30 3b 43 53 21 40 3a 2f 74 6d 70 20 |q..]0;CS!@:/tmp |
00000380 24 20 66 6f 72 20 69 20 69 6e 20 60 73 65 71 20 |$ for i in `seq |
00000390 31 34 20 31 35 60 20 3b 20 64 6f 20 65 63 68 6f |14 15` ; do echo|
000003a0 20 20 24 69 20 3b 20 64 6f 6e 65 20 7c 20 68 65 | $i ; done | he|
000003b0 78 64 75 6d 70 20 2d 43 07 1b 5d 30 3b 43 53 21 |xdump -C..]0;CS!|
000003c0 40 3a 2f 74 6d 70 20 24 20 66 6f 72 20 69 20 69 |@:/tmp $ for i i|
000003d0 6e 20 60 73 65 71 20 31 34 20 31 35 60 20 3b 20 |n `seq 14 15` ; |
000003e0 64 6f 20 65 63 68 6f 20 20 24 69 20 3b 20 64 6f |do echo $i ; do|
000003f0 6e 65 20 7c 20 68 65 78 64 75 6d 70 20 2d 43 07 |ne | hexdump -C.|
00000400 31 34 0a 1b 5d 30 3b 43 53 21 40 3a 2f 74 6d 70 |14..]0;CS!@:/tmp|
00000410 20 24 20 66 6f 72 20 69 20 69 6e 20 60 73 65 71 | $ for i in `seq|
00000420 20 31 34 20 31 35 60 20 3b 20 64 6f 20 65 63 68 | 14 15` ; do ech|
00000430 6f 20 20 24 69 20 3b 20 64 6f 6e 65 20 7c 20 68 |o $i ; done | h|
00000440 65 78 64 75 6d 70 20 2d 43 07 1b 5d 30 3b 43 53 |exdump -C..]0;CS|
00000450 21 40 3a 2f 74 6d 70 20 24 20 66 6f 72 20 69 20 |!@:/tmp $ for i |
00000460 69 6e 20 60 73 65 71 20 31 34 20 31 35 60 20 3b |in `seq 14 15` ;|
00000470 20 64 6f 20 65 63 68 6f 20 20 24 69 20 3b 20 64 | do echo $i ; d|
00000480 6f 6e 65 20 7c 20 68 65 78 64 75 6d 70 20 2d 43 |one | hexdump -C|
00000490 07 31 35 60 0a 1b 5d 30 3b 43 53 21 40 3a 2f 74 |.15`..]0;CS!@:/t|
000004a0 6d 70 20 24 20 66 6f 72 20 69 20 69 6e 20 60 73 |mp $ for i in `s|
000004b0 65 71 20 31 34 20 31 35 60 20 3b 20 64 6f 20 65 |eq 14 15` ; do e|
000004c0 63 68 6f 20 20 24 69 20 3b 20 64 6f 6e 65 20 7c |cho $i ; done ||
000004d0 20 68 65 78 64 75 6d 70 20 2d 43 07 1b 5d 30 3b | hexdump -C..]0;|
000004e0 43 53 21 40 3a 2f 74 6d 70 20 24 20 66 6f 72 20 |CS!@:/tmp $ for |
000004f0 69 20 69 6e 20 60 73 65 71 20 31 34 20 31 35 60 |i in `seq 14 15`|
00000500 20 3b 20 64 6f 20 65 63 68 6f 20 20 24 69 20 3b | ; do echo $i ;|
00000510 20 64 6f 6e 65 20 7c 20 68 65 78 64 75 6d 70 20 | done | hexdump |
00000520 2d 43 07 3b 0a 1b 5d 30 3b 43 53 21 40 3a 2f 74 |-C.;..]0;CS!@:/t|
00000530 6d 70 20 24 20 66 6f 72 20 69 20 69 6e 20 60 73 |mp $ for i in `s|
00000540 65 71 20 31 34 20 31 35 60 20 3b 20 64 6f 20 65 |eq 14 15` ; do e|
00000550 63 68 6f 20 20 24 69 20 3b 20 64 6f 6e 65 20 7c |cho $i ; done ||
00000560 20 68 65 78 64 75 6d 70 20 2d 43 07 1b 5d 30 3b | hexdump -C..]0;|
00000570 43 53 21 40 3a 2f 74 6d 70 20 24 20 66 6f 72 20 |CS!@:/tmp $ for |
00000580 69 20 69 6e 20 60 73 65 71 20 31 34 20 31 35 60 |i in `seq 14 15`|
00000590 20 3b 20 64 6f 20 65 63 68 6f 20 20 24 69 20 3b | ; do echo $i ;|
000005a0 20 64 6f 6e 65 20 7c 20 68 65 78 64 75 6d 70 20 | done | hexdump |
000005b0 2d 43 07 64 6f 0a 1b 5d 30 3b 43 53 21 40 3a 2f |-C.do..]0;CS!@:/|
000005c0 74 6d 70 20 24 20 66 6f 72 20 69 20 69 6e 20 60 |tmp $ for i in `|
000005d0 73 65 71 20 31 34 20 31 35 60 20 3b 20 64 6f 20 |seq 14 15` ; do |
000005e0 65 63 68 6f 20 20 24 69 20 3b 20 64 6f 6e 65 20 |echo $i ; done |
000005f0 7c 20 68 65 78 64 75 6d 70 20 2d 43 07 1b 5d 30 || hexdump -C..]0|
00000600 3b 43 53 21 40 3a 2f 74 6d 70 20 24 20 66 6f 72 |;CS!@:/tmp $ for|
00000610 20 69 20 69 6e 20 60 73 65 71 20 31 34 20 31 35 | i in `seq 14 15|
00000620 60 20 3b 20 64 6f 20 65 63 68 6f 20 20 24 69 20 |` ; do echo $i |
00000630 3b 20 64 6f 6e 65 20 7c 20 68 65 78 64 75 6d 70 |; done | hexdump|
00000640 20 2d 43 07 65 63 68 6f 0a 1b 5d 30 3b 43 53 21 | -C.echo..]0;CS!|
00000650 40 3a 2f 74 6d 70 20 24 20 66 6f 72 20 69 20 69 |@:/tmp $ for i i|
00000660 6e 20 60 73 65 71 20 31 34 20 31 35 60 20 3b 20 |n `seq 14 15` ; |
00000670 64 6f 20 65 63 68 6f 20 20 24 69 20 3b 20 64 6f |do echo $i ; do|
00000680 6e 65 20 7c 20 68 65 78 64 75 6d 70 20 2d 43 07 |ne | hexdump -C.|
00000690 1b 5d 30 3b 43 53 21 40 3a 2f 74 6d 70 20 24 20 |.]0;CS!@:/tmp $ |
000006a0 66 6f 72 20 69 20 69 6e 20 60 73 65 71 20 31 34 |for i in `seq 14|
000006b0 20 31 35 60 20 3b 20 64 6f 20 65 63 68 6f 20 20 | 15` ; do echo |
000006c0 24 69 20 3b 20 64 6f 6e 65 20 7c 20 68 65 78 64 |$i ; done | hexd|
000006d0 75 6d 70 20 2d 43 07 24 69 0a 1b 5d 30 3b 43 53 |ump -C.$i..]0;CS|
000006e0 21 40 3a 2f 74 6d 70 20 24 20 66 6f 72 20 69 20 |!@:/tmp $ for i |
000006f0 69 6e 20 60 73 65 71 20 31 34 20 31 35 60 20 3b |in `seq 14 15` ;|
00000700 20 64 6f 20 65 63 68 6f 20 20 24 69 20 3b 20 64 | do echo $i ; d|
00000710 6f 6e 65 20 7c 20 68 65 78 64 75 6d 70 20 2d 43 |one | hexdump -C|
00000720 07 1b 5d 30 3b 43 53 21 40 3a 2f 74 6d 70 20 24 |..]0;CS!@:/tmp $|
00000730 20 66 6f 72 20 69 20 69 6e 20 60 73 65 71 20 31 | for i in `seq 1|
00000740 34 20 31 35 60 20 3b 20 64 6f 20 65 63 68 6f 20 |4 15` ; do echo |
00000750 20 24 69 20 3b 20 64 6f 6e 65 20 7c 20 68 65 78 | $i ; done | hex|
00000760 64 75 6d 70 20 2d 43 07 3b 0a 1b 5d 30 3b 43 53 |dump -C.;..]0;CS|
00000770 21 40 3a 2f 74 6d 70 20 24 20 66 6f 72 20 69 20 |!@:/tmp $ for i |
00000780 69 6e 20 60 73 65 71 20 31 34 20 31 35 60 20 3b |in `seq 14 15` ;|
00000790 20 64 6f 20 65 63 68 6f 20 20 24 69 20 3b 20 64 | do echo $i ; d|
000007a0 6f 6e 65 20 7c 20 68 65 78 64 75 6d 70 20 2d 43 |one | hexdump -C|
000007b0 07 1b 5d 30 3b 43 53 21 40 3a 2f 74 6d 70 20 24 |..]0;CS!@:/tmp $|
000007c0 20 66 6f 72 20 69 20 69 6e 20 60 73 65 71 20 31 | for i in `seq 1|
000007d0 34 20 31 35 60 20 3b 20 64 6f 20 65 63 68 6f 20 |4 15` ; do echo |
000007e0 20 24 69 20 3b 20 64 6f 6e 65 20 7c 20 68 65 78 | $i ; done | hex|
000007f0 64 75 6d 70 20 2d 43 07 64 6f 6e 65 0a 1b 5d 30 |dump -C.done..]0|
00000800 3b 43 53 21 40 3a 2f 74 6d 70 20 24 20 66 6f 72 |;CS!@:/tmp $ for|
00000810 20 69 20 69 6e 20 60 73 65 71 20 31 34 20 31 35 | i in `seq 14 15|
00000820 60 20 3b 20 64 6f 20 65 63 68 6f 20 20 24 69 20 |` ; do echo $i |
00000830 3b 20 64 6f 6e 65 20 7c 20 68 65 78 64 75 6d 70 |; done | hexdump|
00000840 20 2d 43 07 1b 5d 30 3b 43 53 21 40 3a 2f 74 6d | -C..]0;CS!@:/tm|
00000850 70 20 24 20 66 6f 72 20 69 20 69 6e 20 60 73 65 |p $ for i in `se|
00000860 71 20 31 34 20 31 35 60 20 3b 20 64 6f 20 65 63 |q 14 15` ; do ec|
00000870 68 6f 20 20 24 69 20 3b 20 64 6f 6e 65 20 7c 20 |ho $i ; done | |
00000880 68 65 78 64 75 6d 70 20 2d 43 07 7c 0a 1b 5d 30 |hexdump -C.|..]0|
00000890 3b 43 53 21 40 3a 2f 74 6d 70 20 24 20 66 6f 72 |;CS!@:/tmp $ for|
000008a0 20 69 20 69 6e 20 60 73 65 71 20 31 34 20 31 35 | i in `seq 14 15|
000008b0 60 20 3b 20 64 6f 20 65 63 68 6f 20 20 24 69 20 |` ; do echo $i |
000008c0 3b 20 64 6f 6e 65 20 7c 20 68 65 78 64 75 6d 70 |; done | hexdump|
000008d0 20 2d 43 07 1b 5d 30 3b 43 53 21 40 3a 2f 74 6d | -C..]0;CS!@:/tm|
000008e0 70 20 24 20 66 6f 72 20 69 20 69 6e 20 60 73 65 |p $ for i in `se|
000008f0 71 20 31 34 20 31 35 60 20 3b 20 64 6f 20 65 63 |q 14 15` ; do ec|
00000900 68 6f 20 20 24 69 20 3b 20 64 6f 6e 65 20 7c 20 |ho $i ; done | |
00000910 68 65 78 64 75 6d 70 20 2d 43 07 68 65 78 64 75 |hexdump -C.hexdu|
00000920 6d 70 0a 1b 5d 30 3b 43 53 21 40 3a 2f 74 6d 70 |mp..]0;CS!@:/tmp|
00000930 20 24 20 66 6f 72 20 69 20 69 6e 20 60 73 65 71 | $ for i in `seq|
00000940 20 31 34 20 31 35 60 20 3b 20 64 6f 20 65 63 68 | 14 15` ; do ech|
00000950 6f 20 20 24 69 20 3b 20 64 6f 6e 65 20 7c 20 68 |o $i ; done | h|
00000960 65 78 64 75 6d 70 20 2d 43 07 1b 5d 30 3b 43 53 |exdump -C..]0;CS|
00000970 21 40 3a 2f 74 6d 70 20 24 20 66 6f 72 20 69 20 |!@:/tmp $ for i |
00000980 69 6e 20 60 73 65 71 20 31 34 20 31 35 60 20 3b |in `seq 14 15` ;|
00000990 20 64 6f 20 65 63 68 6f 20 20 24 69 20 3b 20 64 | do echo $i ; d|
000009a0 6f 6e 65 20 7c 20 68 65 78 64 75 6d 70 20 2d 43 |one | hexdump -C|
000009b0 07 2d 43 07 31 34 0a 1b 5d 30 3b 43 53 21 40 3a |.-C.14..]0;CS!@:|
000009c0 2f 74 6d 70 20 24 20 66 6f 72 20 69 20 69 6e 20 |/tmp $ for i in |
000009d0 60 73 65 71 20 31 34 20 31 35 60 20 3b 20 64 6f |`seq 14 15` ; do|
000009e0 20 65 63 68 6f 20 20 24 69 20 3b 20 64 6f 6e 65 | echo $i ; done|
000009f0 20 7c 20 68 65 78 64 75 6d 70 20 2d 43 07 1b 5d | | hexdump -C..]|
00000a00 30 3b 43 53 21 40 3a 2f 74 6d 70 20 24 20 66 6f |0;CS!@:/tmp $ fo|
00000a10 72 20 69 20 69 6e 20 60 73 65 71 20 31 34 20 31 |r i in `seq 14 1|
00000a20 35 60 20 3b 20 64 6f 20 65 63 68 6f 20 20 24 69 |5` ; do echo $i|
00000a30 20 3b 20 64 6f 6e 65 20 7c 20 68 65 78 64 75 6d | ; done | hexdum|
00000a40 70 20 2d 43 07 31 35 0a |p -C.15.|
출력은 동일합니다
for i in $(seq 14 15) ; do echo $i ; done | hexdump -C
따라서 백틱을 사용하는 것 자체는 문제가 되지 않는 것 같습니다.
내가 뭘 잘못했나요?
답변1
당신이 보여주는 것처럼 :
$ trap -p DEBUG
trap -- 'preexec_invoke_exec' DEBUG
DEBUG
각 명령 전에 명령을 실행하는 트랩이 있습니다 . 겉보기에 preexec_invoke_exec
이 명령은 (결국) 실행 중인 명령으로 터미널 에뮬레이터의 제목을 업데이트하려고 시도하는 것처럼 보입니다.
그러나 이를 위해 터미널 대신 stdout에 이스케이프 시퀀스를 기록합니다.
이 작업을 수행하는 위치를 식별하고 이 명령 대체에서처럼 > /dev/tty
stdout이 리디렉션되는 경우에도 항상 tty 장치로 전송되도록 리디렉션을 추가해야 합니다.$(...)
또한 이것이 s preexec_invoke_exec
시뮬레이션을 의미한다면 후킹은 명령줄이 승인된 후 실행되기 전에 한 번만 실행되어야 하고 해당 명령줄의 각 명령에 대해 한 번만 실행되는 것이 아니기 때문에 잘못된 작업을 수행한다는 점에 유의하십시오.zsh
preexec
preexec
zsh