cat:无效选项 - ' a'

时间:2015-02-05 11:21:48

标签: linux shell

我有一些c文件和common.txt在" Abb / test"文件夹和temp.txt在" Abb"我希望在所有c文件的头文件中复制common.txt的内容。我使用以下unix shell脚本代码: -

for i in 'find test -name *.c'; do cat test/common.txt $i > temp.txt && mv temp.txt $i; done

但它给出了错误" cat:无效选项 - ' a' "
有人可以帮助我。

2 个答案:

答案 0 :(得分:3)

您的代码中存在几个严重问题。

您的代码包含可读性新行:

for i in 'find test -name *.c'
do
  cat test/common.txt $i > temp.txt && mv temp.txt $i
done

问题:shell替换的引号错误。

for i in `find test -name '*.c'`
do
  cat test/common.txt $i > temp.txt && mv temp.txt $i
done

问题:没有引用$i

for i in `find test -name '*.c'`
do
  cat test/common.txt "$i" > temp.txt && mv temp.txt "$i"
done

问题:使用for循环遍历文件名。

find test -name '*.c' | while read -r filename
do
  cat test/common.txt "$filename" > temp.txt && mv temp.txt "$filename"
done

答案 1 :(得分:0)

我在执行自定义上传的shell脚本时尝试使用cp命令时出现类似错误,经过大量时间搜索原因后我终于发现我的脚本文件有 windows line endings 并将其转换为 unix format 后,问题就解决了。