다음과 같은 스크립트가 있습니다.
for f in *
do
#if condition
if [[ -d $f ]]; then
echo "$f is a directory";
else
echo "$f is not a directory";
fi
done
이렇게 여러 스크립트를 한 줄로 변환하는 것이 가능합니까? ( #
댓글을 삭제해야 할 수도 있습니다 ).
for f in *; do if [[ -d $f ]]; then echo "$f is a directory"; else echo "$f is not a directory"; fi done
위 스크립트에서 명령문 구문을 다음과 같이 변경할 수 있습니다.
for f in *
for f in *;
for f in *;do
if
조건 에도 동일하게 적용됩니다 . 모든 경우에 적절한 한 줄이 생성되어야 합니다. 이를 수행하는 자동화된 방법은 무엇입니까?
답변1
oneliners에서 bash를 구문 분석하는 것은 어려운 작업입니다...
어쨌든 출발점으로 제시된 것과 같은 매우 구체적인 상황을 다루는 제안이 있습니다.
perl -p0e '
s/#.*//;
s/;?\s+(do|done|then|else|fi)\s+/ ; $1 /g '
답변2
다음을 시도해 볼 수 있습니다.
awk '{ printf "%s", $0 }' script.txt