在这里插入图片描述
编写Shell遇到syntax error near unexpected token `$’do\r”

由于该脚本文件是在windows环境下创建编辑的,其默认是将所有的回车变成:CR加上 LF,而Linux/Unix中的回车只是LF.所以导致解释器不认.出现此错误。
**解决办法:**将所有的CRLF转换为LF即可。
通俗一点讲就是win系统的回车和linux的回车不一样 要想正常在linux上正常运行脚本 就需要做一下转换就行

网上方法很多

博主这里主要介绍的是dos2unix

dos2unix是将Windows格式文件转换为Unix、Linux格式的实用命令

用法如下

dos2unix [-hkqV] [-c convmode] [-o file ...] [-n infile outfile ...]


选项与参数:

-k :保留该文件原本的 mtime 时间格式 (不更新文件上次内容经过修订的时间)

-n :保留原本的旧档,将转换后的内容输出到新文件,如: dos2unix -n old new


这里选项参数只列出两个,详细参数可参考网上介绍

我们在文件目录下进行转换


dos2unix  -k  addacount.sh

在这里插入图片描述
在这里插入图片描述
博主这里的脚本是批量创建账号的小脚本,学习测试用的,这里贴出来给小伙伴看看


#!/bin/bash
groupadd myquotagrp
for username in myquota1 myquota2 myquota3 myquota4 myquota5
do
    useradd -g myquotagrp ${username}
    echo "password" | passwd --stdin ${username}
done
mkdir /home/myquota
chgrp myquotagrp /home/myquota
chmod 2770 /home/myquota


本文到这里就结束啦,后面学习shell的时候遇到问题或者有新的shell技巧会继续更新

脚本下载

Logo

更多推荐