여러 줄의 bash 스크립트를 한 줄로 변환

여러 줄의 bash 스크립트를 한 줄로 변환

다음과 같은 스크립트가 있습니다.

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

위 스크립트에서 명령문 구문을 다음과 같이 변경할 수 있습니다.

  1. for f in *
  2. for f in *;
  3. 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

관련 정보