shell 脚本运行时报错:Syntax error: redirection unexpected

一、排查问题

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

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

你可能感兴趣的:(Ubuntu,记录,linux,嵌入式,bash)