我有这样的脚本:
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