我尝试在目录中查找文件并将其复制到其他地方,这是我的脚本:
#!/bin/bash
# fileSearch
array=(a b c d)
for var in array
do
find ~/ -name $var* -exec cp {} ./test/ \;
done
我做错了什么?他找不到任何文件...... 我想它可能会引用引号。
任何人都可以帮助我吗?
由于
答案 0 :(得分:3)
试试这个:
#!/bin/bash
# fileSearch
array=(a b c d)
for var in array
do
echo $var
done
输出:
array
换句话说,你只是循环一个包含单个单词“array”的单词列表。正确的版本应扩展数组,并添加$
- 符号(表示引用变量):
#!/bin/bash
# fileSearch
array=(a b c d)
for var in ${array[@]}
do
find ~/ -name "$var*" -exec cp {} ./test/ \;
done
引用变量也是一个好习惯,即,无论何时使用$var
之类的变量,都要使用"$var"
。当您的变量包含带有空格(或其他“奇怪”符号)且应被视为单个字符串的字符串时,这可以防止出现许多问题。