[英]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.