Bash
只有一個文件從一組文件中回顯
我嘗試
cp
使用數組將 2 個或多個文件從一個目錄複製到另一個目錄。我執行了:
files=( LocalSettings.php robots.txt .htaccess ${domain}.png googlec69e044fede13fdc.htm )
用表格縮進的文件名;
我的目標是之後執行:
cp -a "source_path/${files[@]}" "/destanation_path"
我的問題是,在測試變數本身時,
echo $files
只返回了第一個文件名LocalSettings.php
,而不是完整的文件列表。你會怎麼解釋這個?
相關:多行方式的 cp;
它的
Bash
功能描述在man bash
:引用不帶下標的數組變數等價於引用下標為 0 的數組。
如果要列印
files
數組的所有成員:echo "${files[@]}"
也描述在
man bash
:${名稱
$$ @ $$} 將 name 的每個元素擴展為一個單獨的單詞。
$files
並且${files[0]}
是等效的,files
例如您在問題中的列表。請注意,僅在列表的第一個元素之前
"source_path/${files[@]}"
放置。source_path/
要以使每個元素都以某個路徑為前綴的方式修改列表,您可以執行以下操作files=( ... your list of files ... ) for element in "${files[@]}"; do files=( "${files[@]:1}" "source_path/$element" ) done cp "${files[@]}" destanation_path
或者,您可以在執行
cd
,之前添加實際名稱的路徑,同時從一開始就分配列表中的值。source_path``cp