一個復制文件的Shell腳本


寫一個關於復制文件的Shell腳本,腳本的功能:

①把一個目錄下(目錄A)的文件復制到另外一個目錄中(目錄B);

②如果目錄B不存在,就創建出這個目錄;

③可以重命名復制后得到的文件;

其實,這個腳本並沒有什么用,只是為了檢驗最近學習的Shell語法是否掌握了而已。源碼如下:

PATH0=$1
FILE0=$2

PATH1=$3
FILE1=$4

if [ ! -d $PATH0 ] ; then
        echo "The path is not exist!"
        exit 0
else
        echo "The path is exist!"
fi

if [ ! -f "$PATH0$FILE0" ] ; then
        echo "Can't find $FILE0 this file!"
        exit 0
else
        echo "the file is exist!"
fi

if [ ! -d $PATH1 ] ; then
        echo "The path is not exist,and creat it now!"
        mkdir $PATH1
        cp -i $PATH0$FILE0 $PATH1$FILE1
else
        if [ ! -n "$FILE1" ] ; then #$FILE這個變量必須加""號,否則會出錯,不能正確判斷
                echo "$PATH1 is exist,but FILE1 is empty!"
                cp  $PATH0$FILE0  $PATH1
        else
                echo "$PATH1 is exist !"
                cp -i $PATH0$FILE0 $PATH1FILE1
        fi

fi



exit 0

  

  

修改這個腳本的權限:

yang@yang-VirtualBox:~/test$ sudo chmod 777 auto_cp.sh 

  

執行這個腳本的方法:

yang@yang-VirtualBox:~/test$ ./auto_cp.sh 目錄A  文件A  目錄B  文件B 

  這個腳本中有四個參數,第一個參數是需要復制的文件所在的目錄,第二個參數是需要復制的目錄,第三個參數是要復制到的目標路徑,第四個參數復制完成后文件的名字

1.第一種情況,目錄B不存在,第四個參數為空:

 

 這種情況下,會創建出一個新的目錄,路徑為第三個參數,然后把文件A原封不動地復制到這個新創建的目錄中。

2、第二種情況,目錄B不存在,文件B的名字跟文件A不同:

 

 這種情況下,會根據參數3的路徑創建出一個目錄,把文件A復制到這個新創建的目錄中,並且重命名為第四個參數的名稱;

3、第三種情況,目錄B存在,第四個參數為空:

 

 這種情況下,直接把文件A原封不動地復制到目錄B中

4.第四種情況,目錄A不存在:

 

 報錯!

5、第五種情況,文件A不存在:

 

 報錯!

 

最后,補充一些知識點:

實現代碼一

復制代碼
#shell判斷文件夾是否存在
 
#如果文件夾不存在,創建文件夾
if [ ! -d "/Top" ]; then
 mkdir -p /Topfi
 
#shell判斷文件,目錄是否存在或者具有權限
 
folder="/Top"
file="/Top/test.txt"
 
# -x 參數判斷 $folder 是否存在並且是否具有可執行權限
if [ ! -x "$folder"]; then
 mkdir "$folder"
fi
 
# -d 參數判斷 $folder 是否存在
if [ ! -d "$folder"]; then
 mkdir "$folder"
fi
 
# -f 參數判斷 $file 是否存在
if [ ! -f "$file" ]; then
 touch "$file"
fi
# -n 判斷一個"變量"是否有值 if [ ! -n "$file" ]; then echo "$file 變量為空!" exit 0 fi # 判斷兩個變量的字符串內容是否相同 if [ "$file1" = "$file2" ]; then echo "$file1 equal $file2" else echo "$file1 not equal $file2" fi
復制代碼

實現代碼二

復制代碼
#!/bin/sh
# 說明:判斷文件是否存在

 
myPath="/Top"
myFile="/Top/access.log"

# 這里的-x 參數判斷$myPath是否存在並且是否具有可執行權限
if [ ! -x "$myPath"]; then
 mkdir "$myPath"
fi
# 這里的-d 參數判斷$myPath是否存在
if [ ! -d "$myPath"]; then
 mkdir "$myPath"
fi
 
# 這里的-f參數判斷$myFile是否存在
if [ ! -f "$myFile" ]; then
 touch "$myFile"
fi

# 其他參數還有-n,-n是判斷一個變量是否是否有值
if [ ! -n "$myVar" ]; then
 echo "$myVar 變量為空!"
 exit 0
fi
 
# 判斷$file字符串內容是否是“123123”相同
if [ "$file1" = "123123" ]; then
 echo "$file1 equal $file2"
else
 echo "$file1 not equal $file2"
fi

 

 

參考:https://www.cnblogs.com/weijiangbao/p/7862278.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM