sh脚本_windows运行sh文件

sh脚本_windows运行sh文件shell脚本:是基本与国产式,解释执行的语言shell脚步的用处执行系统管理和故障排除创建简单的应用程序处理文本或文件shell脚本的基本结构系统命令的组合变量表达式控制语句格式要求:shell脚本要以.sh结尾,主要是方便识别,一目了然知道这是一个shell脚本#!/bin/

大家好,欢迎来到IT知识分享网。

shell脚本:是基本与国产式,解释执行的语言

shell脚步的用处

执行系统管理和故障排除

    创建简单的应用程序

    处理文本或文件

shell脚本的基本结构
    系统命令的组合
    变量
    表达式
    控制语句
格式要求:
    shell脚本要以.sh结尾,主要是方便识别,一目了然知道这是一个shell脚本
    #!/bin/bash  # 首行必须这么写,shebang机制。告诉这个脚本用bash执行,不同shell写法不同如:#!/bin/csh
    shell脚本里#(井号)为注释,但第一行的特殊
脚本写完后要加执行权限
运行脚本:
   ./xx.sh  相对路径
    /opt/xx.sh 绝对路径
    或bash xx.sh

第一个shell脚本:
    vi hello.sh
    #!/bin/bash
    echo “Hello World!”
命令执行过程:
    先看是否是个别名,如果不是再看是否为内部命令,还不是找外部命令,如果还没有则报错:command not found
在运行时还可以执行远程服务器上的脚本
    curl  ip/xx.sh |bash
脚本调试
    语法检查(只检查语法不执行)
    bash -n  sh脚本_windows运行sh文件script.sh
    显示执行过程(逻辑错误)
    bash -x  script.sh
    或自己阶段性输出
    命令写错了后面的命令也会执行

脚本错误总结
    语法错误 (bash -n)
    命令错误
    逻辑错误 (bash -x)
变量:
    变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数据,变量表示命名的内存空间,将数据放在内存空间中,通过变量名来获取里面存的数据。
变量类型
    内置变量: PS1, PATH,SHELL, HOSTNAME,$?
    用户自定义变量

不同的变量存放的数据不同,决定了
    数据存储方式
    参与的运算
    表示的数据范围

变量的数据类型:
    字符,字符串,数组
    数值:整型,浮点型
    Shell 脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,在 Bash shell 中,每一个变量的值都是字符串,无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储。
    这意味着,Bash shell 在默认情况下不会区分变量类型,即使你将整数和小数赋值给变量,它们也会被视为字符串,这和别的编程语言不太一样,如golang在定义变量类型时要手动指定

 

she变量的命名规和大部分编程一样

变量名由数字,字母,下划线组成

必须以字母或者·下划线开头,不能以-开头,不能使用横线-  不能使用shell里面的关键字或者shell里面的命令

变量名最好有意义,并且体出现实际作用

 ps的参数非常多

-A列出所有的行程

-w显示加厚可以显示较多的咨讯

-au显示所有包括含其他的资讯

-aux显示所有包含其他使用者的行程

au(x)输出格式

USERE PID %MEMVSZRSS TTY STAT START TIME COMMAND

USER:行程拥有者

PID:pid

%CPU:占用的CPU使用率

%MEM:占用的记忆体使用率

VSZ:占用的虚拟记忆体大小

RSS:占用的记忆体大小

TTY:终端的次要装置号码

(minor devic nuberof tty)

 

 

#pstree

几个重要的参数:

 

-A: 各进程树之间的连接以ASCII码字符来连接

-U:各进程树之间的连接以utf8字符来连接,某些终端可能会有错误

-p:同时列出每个进程的PID

-u: 同时列出每个进程的所属账号名称

 

 

 

 

 

 

 

 

 

 

 

变量定义和引用

 

普通变量:生效范围为当前 shell 进程,对当前 shell 之外的其它 shell 进程,包括当前 shell


的子 shell 进程均无效


环境变量: 生效范围为当前 shell 进程及其子进程


本地变量:生效范围为当前 shell 进程中某代码片断,通

常指函数


变量的赋值:


name=“10itedu”


可以用以下多种形式


直接字符串: a=1 files=/tmp/*


变量引用: name1=“$name” 

命令引用: name=`date` 或 name=$(date)
查看全部变量(包括系统自带的):


set
取消变量:
unset name


变量赋值是临时生效,当退出终端时,变量失效
在 shell 的变量中双引号的细节


 a=`seq 1 10`
echo $a


1 2 3 4 5 6 7 8 9  10
 echo “$a”
1
.
.
10
d
变量的引用:


$name


${date}


一般情况用$name 方式就足够了,什么时候用${}


把两个变量用_下划线连接时,


echo $name_$date


echo ${name}_$date

 

环境变量:可以使子进程继承父进程中的变量,但是不能反过来。如果子进程修改了父进


程中的变量,那么子进程的子进程会继承修改的那个值\

 

行后 c.sh 没有结果,查看进程 ps, 查看进程树 pstree 如果默认没安装手动安装(yum 


install -y psmisc)


可以用 pstree 查看进程树

 

再执行时,子进程就可以使用父进程里面的变量


如果定义在子脚本中也定义一个 name 变量,那么在执行时会优先选择子脚本里的变量


如果子脚本里还有子脚本,会不会继承到 f.sh 里面的 name

 

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/30047.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信