簡體   English   中英

從命令行參數使用bash腳本復制多個文件?

[英]Copy multiple files with bash script from command line arguments?

我想創建一個腳本,該腳本允許我從命令行輸入多個文件名,並使該腳本將這些文件復制到另一個目錄。 這是我正在嘗試的方法,但我不斷收到錯誤消息

第10行:期望使用二進制運算符

#!/bin/bash

DIRECTORY=/.test_files
FILE=$*
if [ -e $DIRECTORY/$FILE ]; then
        echo "File already exists"
else
        cp $FILE $DIRECTORY
fi

因此,如果腳本名為copfiles.sh,我正在寫...

./copyfiles.sh doc1.txt doc2.txt

它將移動文件,但是如果它們已經存在,它將不會讀取錯誤消息。

另外,無論文件是否存在,我都會收到“第10行:期望的二進制運算符”錯誤。 誰能告訴我我在做什么錯?

可能的問題是,如果文件名帶有空格或多個參數$ *包含空格,則[ -e $DIR/$FILE ]將擴展為包含許多單詞,例如[ -e /.test_files/First word and more ]-e期望后面僅一個單詞。 嘗試將其放在諸如

if [ -e "$DIRECTORY/$FILE" ]

當然,您可能只想將$ 1存儲在$ FILE中以獲取第一個參數。

要測試所有參數,您需要遍歷參數並使用類似的方法測試每個參數

for FILE in "$@"; do
    if [ -e "$DIRECTORY/$FILE" ]; then
        echo "$FILE already exists"
    else
        cp "$FILE" $DIRECTORY
    fi
done

在$ @周圍也使用引號來保留原始參數中的空格

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM