加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 带有进程替换的shell脚本中的语法错误

发布时间:2020-12-13 16:56:58 所属栏目:Linux 来源:网络整理
导读:我有这个 shell脚本,用于备份我的系统.有一条线: tar -Pzcpf /backups/backup.tar.gz --directory=/ --exclude=proc --exclude=sys --exclude=dev/pts --exclude=backups --exclude=var/log / 2 (grep -v 'socket ignored' 2) 正如您所看到的,我一直在尝试
我有这个 shell脚本,用于备份我的系统.有一条线:
tar -Pzcpf /backups/backup.tar.gz --directory=/ --exclude=proc --exclude=sys --exclude=dev/pts --exclude=backups --exclude=var/log / 2> >(grep -v 'socket ignored' >&2)

正如您所看到的,我一直在尝试使用this blog post过滤掉焦油烦人的,无用的“套接字忽略”错误.

我在执行时从shell获得的是:

/bin/sysback: line 45: syntax error near unexpected token >'
/bin/sysback: line 45:
tar -Pzcpf /backups/backup –directory=/
–exclude=proc –exclude=sys –exclude=dev/pts –exclude=backups –exclude=var/log / 2> >(grep -v ‘socket ignored’ >&2)’

解决方法

您使用的语法是基本shell语法的bash扩展,因此您必须注意使用bash运行脚本. (Ksh也有>(…)进程替换但在重定向后不支持它.Zsh会好的.)

鉴于您收到的错误消息,您在bash中运行此脚本,但在其POSIX兼容模式下,而不是在完全bash模式下.注意使用明确的#!/ bin / bash行来调用脚本. #!/ bin / sh不会这样做,即使/ bin / sh是bash的符号链接,因为如果以名称sh调用bash,则bash以POSIX模式运行.如果使用bash功能,请始终按名称调用bash.

如果要使用bash功能,请注意不要设置环境变量POSIXLY_CORRECT或在命令行上传递–posix选项.

或者,不要使用这种特定于bash的语法;使用便携式构造,例如Stephane Rouberol提出的构造.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读