Преобразовать многострочный 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 строку. Какой может быть автоматизированный способ сделать это?

решение1

Разбор bash в однострочниках — сложная задача...

В любом случае, в качестве отправной точки, вот предложение, которое охватывает очень конкретные ситуации, подобные представленной.

perl -p0e '
    s/#.*//; 
    s/;?\s+(do|done|then|else|fi)\s+/ ; $1 /g '

решение2

Вы можете попробовать следующее:

awk '{ printf "%s", $0 }' script.txt

Связанный контент