shell脚本初析】的更多相关文章

简单理解:运用很多工具,将复杂的步骤简单化,体现在shell脚本中框架:必须有备注,写的别人能够看得懂开头:#! /bin/bash 代表的意思是改文件使用的是bash语法要想使用该种方法运行shell脚本,前提是脚本本身有执行权限,所以需要给脚本加一个 ‘x’ 权限.另外使用sh命令去执行一个shell脚本的时候是可以加-x选项来查看这个脚本执行过程的,这样有利于我们调试这个脚本哪里出了问题chmod +x first.sh           #加权限. /first.sh         …
shell脚本报错:"[: =: unary operator expected" 在匹配字符串相等时,我用了类似这样的语句: if [ $STATUS == "OK" ]; then echo "OK" fi 在运行时出现了 [: =: unary operator expected 的错误,就一直找不到原因,尝试了删除等号两侧的空格和括号里的空格都不管用,最后baidu了一下,才找到原因.把语句改成这样就不会出错了. if [[ $STATU…
标题很长:通过shell脚本来rerun一个oozie调度失败的job,从而可以跳过执行失败的节点 不过目前从oozie调度测试的例子来看,oozie本身的retry好像并没有参数可以控制跳过失败的节点.必须手工重新rerun的时候指定 -D oozie.wf.rerun.failnodes=false 参数. 这个问题发生的原因是不同的节点安装的软件包有些差异导致一些jar包冲突,这样就使得该job在某些节点执行成功,某些节点执行失败. 这样我就写了一段shell脚本,来从oozie的jog表…
当我们把文件从windows系统中编辑的文件拷贝到linux系统中,如果我们执行文件会保存如下的错: shell脚本报错:-bash: xxx: /bin/bash^M: bad interpreter: No such file or directory 1.在命令模式中使用set ff命令查看文件格式 :set ff 可以看到文件的格式为dos: fileformat=dos 2.通过命令行修改文件格式 :set ff=unix 执行完命令后再次通过set ff命令查看文件格式,可以看到文件…
py很强大,我承认.但在运维方面,py不但不强大,还有硬伤.正因为有下述硬伤,所以我们运维,还是用shell多,用py极少.我看到用shell的人很多,你建议人用python,人说py是很好,但下一秒都跑光了.       ------只从shell角度,详细对比powershell和python   ------[1在linux安装powershell,并不是难题]------ 无需编译,一键安装powershell: centos7及以上,安装powershell:curl -o /etc/…
Linux和Windows文本文件的行结束标志不同.在Linux中,文本文件用"/n"表示回车换行,而Windows用"/r/n"表示回车换行.有时候在Windows编写shell脚本时需要注意这个,否则shell脚本会报"No such file or directory"或"command not found line x"之类的错误,如果不知晓前因后果,肯定会被这个折腾得相当郁闷.如下所示test.sh [root@DB…
使用sudo执行脚本报错:sudo: myshell.sh: command not found 原因:发生这种情况的原因是因为您正在尝试执行的脚本需要正确的权限 解决:执行sudo chmod a+x myshell.sh,然后在次执行脚本sudo myshell.sh 来源:https://stackoverflow.com/questions/14803062/sudo-install-sh-command-not-found-is-not-working-on-lion…
在学习shell中测试case参数命令代码如下 #!/bin/bash #switch测试 case $1 in     start)         echo 'start'     ;;     stop)         echo 'stop'     ;; esac 在给当前shell脚本赋予了执行权限之后,执行报错代码如下 [root@localhost sh]# ./switch.sh stop -bash: ./switch.sh: /bin/bash^M: bad interpr…
今天遇到一个很诡异的问题,一直运行很正常的shell脚本失败了,只是昨天增加了一个参数而已. 报错信息: /bin/bash^M: bad interpreter: No such file or directory 后来发现root cause, 昨天修改文件的时候在windows中修改保存,然后上传的. 文件被识别成dos格式. 在此的命令模式下使用以下命令可以查看: : set ff 返回结果:  fileformat=dos 修改文件格式为Unix,使用下面的命令: :set ff=un…
Linux和Windows文本文件的行结束标志不同.在Linux中,文本文件用"/n"表示回车换行,而Windows用"/r/n"表示回车换行.有时候在Windows编写shell脚本时需要注意这个,否则shell脚本会报"No such file or directory"或"command not found line x"之类的错误,如果不知晓前因后果,肯定会被这个折腾得相当郁闷.如下所示test.sh [root@DB…
今天执行一个shell脚本,然后在执行的时候报错,脚本内容很简单,仅供测试: #!/bin/sh echo "test shell " 具体报错信息如下 [root@localhost test]# ./test.sh -bash: ./test.sh: /bin/sh^M: bad interpreter: No such file or directory 由于之前自己对shell不太熟悉,找同事沟通了后了解了原委,主要原因是test.sh是我在windows下编辑然后上传到lin…
.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录 这是因为shell脚本是Windows下编辑的 格式不一样 执行 sed -i 's/\r$//' 脚本名称.sh…
错误原因之一很有可能是运行的脚本文件是DOS格式的, 即每一行的行尾以\r\n来标识, 其ASCII码分别是0x0D, 0x0A.可以有很多种办法看这个文件是DOS格式的还是UNIX格式的, 还是MAC格式的(1). vi filename然后用命令:set ff?可以看到dos或unix的字样. 如果的确是dos格式的, 那么你可以用set ff=unix把它强制为unix格式的, 然后存盘退出. 再运行一遍看.(2). 用joe filename如果是DOS格式的, 那么行尾会有很多绿色的^…
在匹配字符串时用了类似这样的语句 if[ $timeofday = "yes"]; then echo "Good morning" exit 0 报错的原因是:如果变量timeofday的值为空,那么就if语句就变成了if [  ="yes" ],这不是一个合法的条件.为了避免出现这种情况,我们必须给变量加上引号if [ "$timeofdat"="yes" ],这样即使是空变量也提供了合法的测试条件,,…
解决办法1: vi test.sh :set fileformat=unix :wq 解决办法2: yum install dos2unix dos2unix my.sh 原因剖析: DOS下文件和Linux下文件格式差异问题导致的.[在windows里,换行用的两个符号,回车\r,换行符号\n,在linux下只需一个符号\n就可以了.]…
windows下编辑然后上传到linux系统里执行的..sh文件的格式为dos格式.而linux只能执行格式为unix格式的脚本. 我们可以通过vi编辑器来查看文件的format格式.步骤如下: 1.首先用vi命令打开文件 [root@localhost test]# vi test.sh 2.在vi命令模式中使用 :set ff 命令 可以看到改文件的格式为dos 3.修改文件format为unix 方法一:使用vi修改文件format 命令:set ff=unix 执行完后再通过set ff…
引起此问题最可能的原因是: 在windows下编写的文件上传到linux执行. 我是在notepad++上编写的代码,之后上传到linux执行,报此错误.仔细检查,语法方面没有错误.上网查了一下,发现是windows和linux的换行不同导致的. windows中是回车+换行CRLF:linux下是就一个换行LF CR意思是carriage return,回车,\r,ASCII码为13 LF意思是linefeed,换行,\n,ASCII码为10 在notepad++中可以查看:视图-显示符号-显…
今天遇到一个奇怪的问题,从一个服务器上down下来的脚本,在本地电脑做了点修改之后,上传到另外一台服务器上来执行,就报这个错误,问度娘,是编码格式的问题,windows把sh格式的编码改成dos格式的了,下面上查看方案 #查看文件所有的内容,发现换行不是 $ cat -A update.sh #转换格式 dos2unix update.sh #如果没有dos2unix yum -y install dos2unix 问题解决.…
主要原因是build.sh是在windows下编辑然后上传到linux系统里执行的..sh文件的格式为dos格式.而linux只能执行格式为unix格式的脚本. 我们可以通过vi编辑器来查看文件的format格式.步骤如下: 1.首先用vi命令打开文件 2.在vi命令模式中使用 :set ff 可以看到改文件的格式为dos 3.修改文件format为unix 方法一:使用vi修改文件format 命令:set ff=unix :set ff=unix 执行完后再通过set ff命令查看文件格式,…
# 通过jenkins的apache用户rsync同步php代码到远程服务器报错如下: SSH: EXEC: STDOUT/STDERR from command [/bin/sh /usr/local/worksh/jenkins_rsync/rsync_cc-product-api_cn.sh all ] ... /usr/local/worksh/jenkins_rsync/rsync_cc-product-api_cn.: `product-api_rsync_all': not a v…
问题: In []: os.system('./test_shell_no_para.sh') : ./test_shell_no_para.sh: Permission denied Out[]: 解决办法: 遇到该问题首先想到应该是没有执行权限.     给bash脚本添加执行权限 chmod +x xx.sh命令 重新提交spark任务,如若还有该问题,则可能该脚本还需要可读或者可写 则设置该脚本所在的目录src权限, -R src 这样问题就被解决了…
1.tail -f /var/log/secure 你会发现有很多的登录 错误.这说明你的机器正在被暴力破解. 2.新建 一个 shell脚 本 保存退出. 3.加入定时crontab -e 我这里每10分钟判断一下,你可以放长一点时间 4.看一下/etc/hosts.deny 这个时候就有一个IP被阻止在外边了. 5.再查看一下secure tail -f /var/log/secure 说明成功了.…
Shell脚本源码如下: #!/bin/sh #根据进程名杀死进程 if [ $# -lt 1 ] then echo "缺少参数:procedure_name" exit 1 fi   PROCESS=`ps -ef|grep $1|grep -v grep|grep -v PPID|awk '{ print $2}'` for i in $PROCESS do echo "Kill the $1 process [ $i ]" kill -9 $i done 效…
cygwin下面写shell,运行出错:syntax error near unexpected token `$’do\r” 写shell,运行出错:syntax error near unexpected token `$’do\r” [问题] 在cygwin下,用notepad++写了个简单的shell脚本,内容如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 #!/bin/bash #remove *.bak in subfolder files echo 'remov…
============================================================================================================================ 09年,鸟人第四年linux环境,用ssh终端连上server,两眼一黑(啥命令也不会)..... 每次把成老师在我电脑上操作的命令用history找到记录下来,避免反复问他同样的问题... 后来把工作中用到的新命令.从<shell编程..>学到的…
有时执行脚本时会报错: [root@host1 shell]# sh -x test.sh + $'\r' : command not found test.: syntax error: unexpected end of file 原因可能是: 文本编辑是在windows下通过记事本或其它编辑器编写的这个文件,运行 在cygwin模拟LINUX软件环境下. 解决思路: DOS下文件和Linux下文件格式差异问题导致的. DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D 0…
shell脚本动画小工具 看gif图: shell脚本版 脚本内容如下: #!/usr/bin/env bash ## ------------------------------------------------------------ ## Author:博客园--骏马金龙 ## shell scripts:http://www.cnblogs.com/f-ck-need-u/p/7048359.html ## ---------------------------------------…
[1]Shell脚本:while read line无法读取最后一行的问题 刚刚利用shell脚本处理日志文件时,发现了一个问题:while read line无法读取到最后一行 通过编辑器可以看到待处理的文件是5243行,但是,脚本的计数值却只打印了5242次. shell脚本源码如下: icount=0 while read line do data=`echo ${line#*error repeat sdr }` callid=`echo ${data% error:mysql.*}`…
/********************************************************************** * U-Boot shell脚本语法 * 说明: * 之前每次看U-Boot的环境变量,里面经常有if.while.for,就当Linux * Shell脚本来用,也没去找文档看看. * * 2018-7-16 深圳 宝安西乡 曾剑锋 ************************************************************…
1. 执行shell脚本报  Unsupported major.minor version 52.0 报错原因:java文件jdk和服务器上的jdk不匹配, 解决方法: a.查看当前服务器用的jdk是哪个版本:java -version b.修改本地代码编译版本,如下图所示: 2.shell调有package修饰的类的时候,报NoClassDefFoundError shell文件内容: echo "htllo test" java shell.PackageTest 摆放位置: 报…