我正在尝试编写一个脚本,该脚本允许我引用带有目录名称列表的文本文件,并且仅将那些目标目录移动到其他位置。我已经写了这个脚本:
#!/bin/bash
readarray -t var < list_of_directory_names
for i in `expr ($var)`
do
cp -r ${old_directory[$i]} new_directory/
done
但是我收到以下错误消息:
syntax error near unexpected token: '($var)'
我使用expr
的原因是我最初使用{[$var]}
,但它给了我错误
value too great for base
因为我的大多数目录名称都以“ 0”开头,程序将其视为八进制表示法,sh无法识别。
非常感谢您。
答案 0 :(得分:0)
执行此操作:
#!/bin/bash
readarray -t var < list_of_directory_names
for i in "${var[@]}"; do
cp -r "$i" ./new_directory/
done
答案 1 :(得分:0)
除非您需要该数组用于其他内容,否则不要费心创建它。请改用while
循环。
while IFS= read -r i; do
cp -r "$i" ./new_directory/
done < list_of_directory_names