授業時間内に課題を提出してもらう。
ホームディレクトリの下のunixディレクトリに
kadai2.shという名前でシェルスクリプトを作り、
画像ファイル名の前半部分と番号の種類を変換できるようにせよ。
% ls *.iff tmp.1.iff tmp.2.iff tmp.3.iff tmp.4.iff tmp.5.iff tmp.11.iff tmp.12.iff tmp.13.iff tmp.14.iff tmp.15.iff tmp.101.iff tmp.102.iff tmp.103.iff tmp.104.iff tmp.105.iff % csh kadai2.sh 3 5 tmp test % ls *.iff tmp.1.iff tmp.2.iff test.0003.iff test.0004.iff test.0005.iff tmp.11.iff tmp.12.iff tmp.13.iff tmp.14.iff tmp.15.iff tmp.101.iff tmp.102.iff tmp.103.iff tmp.104.iff tmp.105.iff % csh kadai2.sh 11 13 tmp test % ls *.iff tmp.1.iff tmp.2.iff test.0003.iff test.0004.iff test.0005.iff test.0011.iff test.0012.iff test.0013.iff tmp.14.iff tmp.15.iff tmp.101.iff tmp.102.iff tmp.103.iff tmp.104.iff tmp.105.iff % csh kadai2.sh 102 104 tmp test % ls *.iff tmp.1.iff tmp.2.iff test.0003.iff test.0004.iff test.0005.iff test.0011.iff test.0012.iff test.0013.iff tmp.14.iff tmp.15.iff tmp.101.iff test.0102.iff test.0103.iff test.0104.iff tmp.105.iff
基本的にwhileを使用する。
ifを使用した素直な解答。
set i = $argv[1]
while($i <= $argv[2])
if($i < 10) then
mv $argv[3].$i.iff $argv[3].000$i.iff
else if($i < 100) then
mv $argv[3].$i.iff $argv[3].00$i.iff
else if($i < 1000) then
mv $argv[3].$i.iff $argv[3].0$i.iff
else
mv $argv[3].$i.iff $argv[3].$i.iff
endif
@ i ++
end
printfというコマンドを使用すると以下のように短くなる。
set i = $argv[1]
while($i <= $argv[2])
mv $argv[3].$i.iff $argv[4].`printf "%04d" $i`.iff
@ i ++
end
printfはC言語のprintfと同じような使い方のできるコマンドである
% printf "%d\n" 78 78 % printf "%04d\n" 7 0007 % printf "%04d\n" 78 0078 % printf "%04d\n" 178 0178 % printf "%04d\n" 2178 2178