次のようなスクリプトがあります:
for f in *
do
#if condition
if [[ -d $f ]]; then
echo "$f is a directory";
else
echo "$f is not a directory";
fi
done
このように複数のスクリプトを 1 行に変換することは可能ですか? (#
コメント ステートメントを削除する必要があるかもしれません)。
for f in *; do if [[ -d $f ]]; then echo "$f is a directory"; else echo "$f is not a directory"; fi done
上記のスクリプトの for ステートメント構文を次のように変更できます。
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