![在 Bash 脚本中使用“cp”命令并排除特定目录](https://linux22.com/image/217835/%E5%9C%A8%20Bash%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E4%BD%BF%E7%94%A8%E2%80%9Ccp%E2%80%9D%E5%91%BD%E4%BB%A4%E5%B9%B6%E6%8E%92%E9%99%A4%E7%89%B9%E5%AE%9A%E7%9B%AE%E5%BD%95.png)
我需要在 shell 脚本中运行此命令复制源 > 目标并排除一个文件夹。
没有 rsync、tar、find、mv 等。
正是这个命令:
cp -var test/!(test2) testbkp
- 在 shell 中它可以工作
- 从 Bash 脚本运行,无需排除,就像
cp -var test testbkp
它的工作原理一样。
当我尝试使用排除选项从 Bash 脚本运行时
cp -var test/!(test2) testbkp
,它不起作用。
没有任何输出,什么也没有,也没有错误消息。
我也检查了这个帖子,但没有结果: 如果从 shell 脚本执行,cp 命令将不会运行
如何在 Bash 脚本中运行此 cp 命令并排除文件夹?
答案1
您应该启用该extglob
选项,脚本中默认情况下不启用该选项:
#!/bin/bash
shopt -s extglob
cp -var test/!(test2) testbkp
还要验证脚本确实在 bash 下运行。