鍍金池/ 問(wèn)答/Linux  HTML/ shell腳本實(shí)現(xiàn)判斷文件是否存在,然后不存在則拷貝文件

shell腳本實(shí)現(xiàn)判斷文件是否存在,然后不存在則拷貝文件

我想實(shí)現(xiàn)某個(gè)功能,例如判斷某個(gè)目錄下是否存在一個(gè)文件,例如叫series_migration_task.xml,如果存在該文件則跳過(guò)不做什么操作,如果不存在該文件,則拷貝腳本main.sh同一目錄下的series_migration_task.xml到其目錄,我的實(shí)現(xiàn)如下:

#!/bin/sh
myFile="/root/apue/series_migration_task.xml "

# 這里的-f參數(shù)判斷$myFile是否存在
if [ ! -f "$myFile" ]; then
cp  ./series_migration_task.xml  /root/apue/
fi

echo "success"

我的初衷是判斷目錄/root/apue目錄下是否有文件series_migration_task.xml文件,如果沒(méi)有的話就cp拷貝當(dāng)前目錄下的series_migration_task.xml到目錄下。結(jié)果按照這個(gè)腳本去操作,不管/root/apue下是否存在該文件都會(huì)去覆蓋,不知道是為什么?
我搜得-f是判斷文件是否存在,不知道哪里有問(wèn)題。

問(wèn)題答案:
參考采納答案評(píng)論,因?yàn)樵诘诙形募yFile最后引號(hào)前多了個(gè)空格。

回答
編輯回答
朽鹿

你拷貝的方向不對(duì)吧?
cp ./series_migration_task.xml /root/apue/

cp 源文件 目標(biāo)文件夾
2017年7月29日 22:01
編輯回答
逗婦乳

好像沒(méi)我啥事了,建議一下,以后shell中的變量最好${variable}這么表示,提高代碼閱讀性和避免了歧義,養(yǎng)成一個(gè)好的習(xí)慣也是不錯(cuò)的。

2018年5月7日 20:44
編輯回答
玩控

有可能是沒(méi)有讀取 /root 的權(quán)限

試試以 sudo 執(zhí)行,或是:

if sudo [ ! -f $myFile ]; then
2017年8月23日 23:32