0

我尝试在目录中查找文件并将它们复制到其他地方,这是我的脚本:

#!/bin/bash
# fileSearch

array=(a b c d)

for var in array
do
        find ~/ -name $var* -exec cp {} ./test/ \;
done

我究竟做错了什么?他不会找到任何文件......我认为它可能会带有引号。

谁能帮我?

谢谢

4

1 回答 1

3

试试这个:

#!/bin/bash
# fileSearch

array=(a b c d)

for var in array
do
    echo $var
done

输出:

array

换句话说,您只是在循环一个包含单个单词“数组”的单词列表。正确的版本应该扩展数组,并添加一个$-symbol (意思是引用变量):

#!/bin/bash
# fileSearch

array=(a b c d)

for var in ${array[@]}
do
    find ~/ -name "$var*" -exec cp {} ./test/ \;
done

引用变量也是一个好习惯,即,每当您使用变量时$var,请"$var"改用。当您的变量包含应被视为单个字符串的带有空格(或其他“奇怪”符号)的字符串时,这可以防止许多问题。

于 2012-09-14T11:35:35.783 回答