如何正确编写呢?

时间:2019-12-10 01:48:51

标签: linux sh

我正在尝试编写一个脚本,该脚本允许我引用带有目录名称列表的文本文件,并且仅将那些目标目录移动到其他位置。我已经写了这个脚本:

#!/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无法识别。

非常感谢您。

2 个答案:

答案 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