2017-09-01 76 views
-3

我想使用if和for循環來編寫shell腳本。Shell - 循環中的增量編號

這個腳本的概念是,我有幾個文件夾(名稱+數字)像下面。

F0

F1

F2

F3

F4

腳本的樣子,

計數= 0

所以該腳本將第一個文件夾移動到另一個文件夾(文件夾名稱爲f如此,F +數= F0),

mv f0 /tmp 

如果是良好的話,它會打印成功並關閉該過程。否則,它會移到第2'的文件夾一樣f+count+1=> f+0+1 ==>f1

mv f1 /tmp 

如果這一步走向成功,然後打印成功和關閉過程,否則再增加數=計+ 1 f+count+1 => f+1+1 =>f3

mv f2 /tmp 
+2

你的問題是什麼?必須有數百個教程展示如何在shell中進行算術運算。 – Barmar

+1

你有什麼嘗試?它是如何失敗的? – choroba

+2

爲什麼你需要使用計數器?只要在f *中輸入dir;做...;做完了' – Barmar

回答

1

這裏有一個開始:

#!/bin/sh 

count=0; 
while ! mv "f$count" /tmp 2> /dev/null 
do count=$((count + 1)) 
done 
echo "Success" 
+0

這是一個好開始。請注意,如果計數超過現存目錄的最大數量,它可能會進入無限循環。很容易用'test -d f $ count ||修復休息「或類似的。 –

+0

似乎試圖移動所有的文件夾,我已經更新了這個問題。如果f0被移動,那麼我的過程完成,因爲有時文件夾號碼是不同的。所以如果f0移動 - >關閉所有,否則嘗試移動f1。 – SQLadmin

+0

我的腳本只會移動一個文件,然後它會打印成功並退出。在這種情況下寫入的條件是如果移動成功,條件將失敗,因此循環終止。 所以,如果f0被移動,循環不會被輸入。否則,嘗試移動f1。 – Abigail