2017-10-21 96 views
1

我想運行這個簡單的腳本,在這個腳本中我通過一系列目錄中的文件循環,並且想要創建一個帶有'cut'的變量,以提取部分名稱的文件。 我得到一個權限被拒絕的錯誤,不知道爲什麼。 下面是我的腳本。在循環linux中創建變量 - 權限被拒絕

FILES=./data/* 

for f in $FILES 
do 
    NEWNAME=$($f|cut -c3-12) 
    echo $NEWNAME 
done 

的最終目標是創建每個文件一個目錄,下游加工,具有mkdir /path/to/new/directory/$NEWNAME

+0

誰是所有者,以及'。/ data/*'中文件的權限是什麼? – alfasin

回答

3

$(stuff)執行stuff作爲命令並將其輸出替換回命令行。所以,當你這樣做:

$($f|cut -c3-12) 

它試圖執行$f爲命令,和管道輸出到cut。您收到錯誤,因爲$f中的文件沒有執行權限。

如果你想切變$f的內容,你需要呼應它:

NEWNAME=$(echo "$f" | cut -c3-12) 

但有沒有必要使用cut爲此,bash有一個內置的參數擴展操作選擇一個子字符串:

NEWNAME=${f:2:10} 
+0

謝謝!它的工作,並使語法的使用更清晰。 – CAsimonet