编写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/bashgroupadd myquotagrpfor username in myquota1 myquota2 myquota3 myquota4 myquota5douseradd -g myquotagrp ${username}echo \"password\" | passwd --stdin ${username}donemkdir /home/myquotachgrp myquotagrp /home/myquotachmod 2770 /home/myquota
本文到这里就结束啦,后面学习shell的时候遇到问题或者有新的shell技巧会继续更新
脚本下载