我有這樣的腳本:
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 f in *
for f in *;
for f in *;do
同樣適用於if
條件。在所有情況下,它都應該產生正確的 1 行。執行此操作的自動化方法是什麼?
答案1
在 oneliners 中解析 bash 是一項艱鉅的任務...
無論如何,作為一個起點,這裡有一個建議來涵蓋非常具體的情況,例如所提出的情況
perl -p0e '
s/#.*//;
s/;?\s+(do|done|then|else|fi)\s+/ ; $1 /g '
答案2
您可以嘗試以下操作:
awk '{ printf "%s", $0 }' script.txt