irpas技术客

shell 脚本运行时报错:Syntax error: redirection unexpected_海面飞行_shell脚本执行报错syntax

网络 5392

一、排查问题 1. 根据脚本运行的log,定义到具体代码

发现是符号“<<<”造成的。但如果在命令行直接运行又不存在这个现象。

2. 查看系统的shell环境 2.1 命令行输入 ls -l /bin/*sh

返回数据 -rwxr-xr-x 1 root root 1037528 Jul 12 2019 /bin/bash -rwxr-xr-x 1 root root 154072 Feb 17 2016 /bin/dash lrwxrwxrwx 1 root root 4 Jul 12 2019 /bin/rbash -> bash lrwxrwxrwx 1 root root 4 Oct 19 2020 /bin/sh -> dash lrwxrwxrwx 1 root root 7 Mar 7 2019 /bin/static-sh -> busybox

2.2 然后输入 echo $SHELL

返回 /bin/dash,说明系统默认支持的是/bin/bash。 想要修改系统默认支持的shell,可以修改/etc/default/useradd,将SHELL=/bin/bash进行修改

结合上面的结果,因为<<<在dash内是不支持的语法。而使用bash是可以支持的。

3. 原因

很多linux系统默认设置的都是dash,而我们很多人学习的shell语法都是以bash为基础的,很容易出现语法错误。

二、解决 1. 修改系统默认的shell环境为/bin/sh vi /etc/default/useradd

将SHELL=/bin/bash修改为/bin/sh

2. 修改/bin/sh的指向 ln -sf bash /bin/sh

这样脚本就可以正常运行了


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #个人记录问题用