이 것은 사실이지만 eval
항상 신중하게 접근 할 필요는 eval echo
건설 항상 무의미하지 않고 할 수 안전하게 사용할 수. 최근에 여러 괄호 확장을 필요한 순서대로 평가하기 위해 필요했습니다.
bash
왼쪽에서 오른쪽으로 여러 개의 괄호 확장을 수행하므로
xargs -I_ cat _/{11..15}/{8..5}.jpg
~로 확장
xargs -I_ cat _/11/8.jpg _/11/7.jpg _/11/6.jpg _/11/5.jpg _/12/8.jpg _/12/7.jpg _/12/6.jpg _/12/5.jpg _/13/8.jpg _/13/7.jpg _/13/6.jpg _/13/5.jpg _/14/8.jpg _/14/7.jpg _/14/6.jpg _/14/5.jpg _/15/8.jpg _/15/7.jpg _/15/6.jpg _/15/5.jpg
하지만 먼저 두 번째 괄호 확장이 필요했습니다.
xargs -I_ cat _/11/8.jpg _/12/8.jpg _/13/8.jpg _/14/8.jpg _/15/8.jpg _/11/7.jpg _/12/7.jpg _/13/7.jpg _/14/7.jpg _/15/7.jpg _/11/6.jpg _/12/6.jpg _/13/6.jpg _/14/6.jpg _/15/6.jpg _/11/5.jpg _/12/5.jpg _/13/5.jpg _/14/5.jpg _/15/5.jpg
내가 할 수있는 최선은
xargs -I_ cat $(eval echo _/'{11..15}'/{8..5}.jpg)
작은 따옴표는 eval
명령 행을 구문 분석하는 동안 첫 번째 중괄호 세트가 확장되지 않도록 보호하여에 의해 호출 된 서브 쉘에 의해 확장되도록합니다 eval
.
중첩 괄호 확장과 관련된 교활한 계획이있을 수 있습니다. 단순히이 작업을 수행 할 수는 있지만 너무 오래되어 어리석은 경우입니다. bash
이런 종류의 것을 달성하는 더 깔끔한 방법을 허용하는 것 이외의 껍질도 있습니다 . 그러나 어쨌든 eval
인수는 모두 매개 변수 확장이 포함되지 않은 고정 문자열이기 때문에 이러한 사용 은 안전합니다.