[英]A Better Way To Write this Bash Script?
此解決方案(下面列出)有效,但它看起來並不是最實用的解決方案。 我想做的是在一個子文件夾中填充一個名稱為t _ ### _ u的子文件夾,然后用兩個文件填充這些子目錄(其中一個文件應重命名為父目錄名稱,並附加一個.c)。更好,更優雅的解決方案?
for i in {1..100}
do
mkdir `printf "t_%03d_u" $i`;
cp ./templates/* `printf "t_%03d_u" $i`;
mv `printf "./t_%03d_u/template.c" $i` `printf "./t_%03d_u/t_%03d.c" $i $i`;
done
echo "Did it work?"
感謝您的任何幫助。
改善腳本的最明顯方法是為您使用的名稱分配變量:
name=`printf "t_%03d" $i`
這樣就可以了
mkdir ${name}_u
cp ./templates/* ${name}_u/
mv ./${name}_u/template.c ./${name}_u/$name.c
重擊4。
for num in {001..100}
do
path="t_${num}_u"
mkdir "$path"
cp ./templates/* "$path";
mv $path/template.c ./$path/t_${num}.c
done
seq -w
非常有用:)
#!/bin/bash
for i in `seq -w 1 100`
do
mkdir t_${i}_u
cp ./templates/* t_${i}_u
mv ./t_${i}_u/template.c ./t_${i}_u/t_${i}_u.c
done
echo "Did it work?"
我相信可以通過一次計算目錄名稱並重新使用它來進一步改善它,但這已經足夠好了,我可以在這里停下來。 :)
我唯一的建議是將零填充字符串設置為變量以方便閱讀:
for i in {1..100}
do
s=$(printf "%03d" $i)
mkdir t_${s}_u
cp ./templates/* t_${s}_u
mv ./t_${s}_u/template.c ./t_${s}_u/t_${s}.c
done
for i in $(seq -w 1 100); do
mkdir t_${i}_u
cp templates/* t_${i}_u
mv t_${i}_u/template.c t_${i}_u/t_${i}.c
done
還沒有測試
您可以將printf的結果保存在一個變量中,而不是每次都重新做一次。 或僅使用seq -w 1 100
生成數字:
for i in $(seq -w 1 100)
do
d=t_${i}_u
mkdir $d
cp templates/* $d
mv $d/template.c $d/t_$i.c
done
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.