У меня есть такой скрипт:
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 строку. Какой может быть автоматизированный способ сделать это?
решение1
Разбор bash в однострочниках — сложная задача...
В любом случае, в качестве отправной точки, вот предложение, которое охватывает очень конкретные ситуации, подобные представленной.
perl -p0e '
s/#.*//;
s/;?\s+(do|done|then|else|fi)\s+/ ; $1 /g '
решение2
Вы можете попробовать следующее:
awk '{ printf "%s", $0 }' script.txt