首页 > 解决方案 > 使用 rm 命令删除所有文件或目录时出现“意外标记 `(' 附近的语法错误”

问题描述

$ sshpass -p "$SSH_PASS" ssh student@"$IP_NFS" "sudo rm -r /srv/nfs4/share/assets_prod/!(v$TAG)"
Warning: Permanently added 'x.x.x.x' (ED0599) to the list of known hosts.
bash: -c: line 0: syntax error near unexpected token `('
bash: -c: line 0: `sudo rm -r /srv/nfs4/share/assets_prod/!(v0.0.3-rc6)'

检查结果直接到nfs服务器

student@nfs:~$ sudo echo rm -r /srv/nfs4/share/assets_prod/!(v0.0.3-rc6)
rm -r /srv/nfs4/share/assets_prod/kk.dd /srv/nfs4/share/assets_prod/kk.dkk /srv/nfs4/share/assets_prod/kk.dkkff /srv/nfs4/share/assets_prod/v0.0.3-rc2 /srv/nfs4/share/assets_prod/v0.0.3-rc3 /srv/nfs4/share/assets_prod/v0.0.3-rc4 /srv/nfs4/share/assets_prod/v0.0.3-rc5

是什么导致命令运行出现问题?

标签: linuxubuntusshgitlab-cinfs

解决方案


您已使用以下命令:

sudo rm -r /srv/nfs4/share/assets_prod/!(v$TAG)

但是括号对shell有特殊的意义。你最好使用

$ sshpass -p "$SSH_PASS" ssh student@"$IP_NFS" "sudo rm -r '/srv/nfs4/share/assets_prod/!(v$TAG)'"

将文字字符串传递给rm,没有外壳干扰。


推荐阅读