**shell脚本的执行方式:

           方法一:首先赋予x权限,再输入相对路径或绝对路径,./testdot.sh或/root/shell/testdot.sh

           方法二:sh testdot.sh(会新开一个bash,不同bash中的变量无法共享)

           方法三:. ./testdot.sh(不会新开bash)

**单引号与双引号:单引号屏蔽一切特殊符号,双引号可以屏蔽空格但无法屏蔽引用变量

**获取紫铜所有的变量:set

**获取内核进程的结构树:pstree

**获取用户的主目录:echo $HOME

**获取当前脚本运行所在目录:echo $PWD

**获取当前脚本所用的解释器:echo $SHELL

**获取当前脚本的用户:echo $USER

**设置全局环境变量:export 变量名

**解除变量:unset 变量名

**设置静态变量:readonly 变量名=1(一般不用)

**查询某条命令的用法:某命令 --help

**变量赋值给另一变量:x=`ls`(或者x=$(ls))

**获取上一个命令退出的状态或函数的返回值:$?

**获取当前进程的编号:$$

**获取当前脚本的名称:$0

**获取输入的第n个参数:$n(n>=1)

**获取脚本参数的个数常用于循环:$#

**获取脚本的所有参数:$*($@)  PS:$*加了引号会变,而$@加了引号不会变还是一个个的变量输出

**使用脚本写出(2+3)*4:第一种写法:expr $(((2+3)*4)) 或者 echo $(((2+3)*4))

            第二种写法:S=`expr 2 + 3`  expr $S \* 4

**在SHELL语言中:export a=1;表示定义的变量,会对自己所在的SHELL进程机器子进程生效

         a=1;表示定义的变量,只对自己所在的SHELL进程生效

         在s.sh中定义的变量,在当前登陆的SHELL进程中

** for 循环的两种写法:

for p in $*
do
echo $p
done

---------------

for ((i = 0; i <= n; i++))
do
echo "第 $i 次"
done

** while 循环的两种写法:

while expression
do
command
done

---------------

i=1
while ((i<=3))
do
 echo $i
 let i++
done

** case 语句的写法:     

case $1 in
start)
echo "starting"
;;
stop)
echo "stoping"
;;
*)
echo "Usage: {start|stop} “
esac

** read 的用法:read -p "提示语句" Var(read -p "please input your name: " NAME  echo $NAME)

         read -n "字符个数" Var

         read -t "等待时间" Var

** if 语句的用法:

#!/bin/bash
read -p "please input your name:" NAME
#printf '%s\n' $NAME
if [ $NAME = root ]
then
echo "hello ${NAME}, welcome !"
elif [ $NAME = itcast ]
then
echo "hello ${NAME}, welcome !"
else
echo "get out here !"
fi

PS:注意[  ]内部前后加空格,[  ]返回false-1。

**判断语句:

      [ condition ] && echo OK || echo NOTOK,条件满足,执行OK,不满足执行NOTOK。(A?B:C)

**常用的判断条件:

        = 字符串比较
        -lt 小于
        -le 小于等于
        -eq 等于
        -gt 大于
        -ge 大于等于
        -ne 不等于

        -r 有读的权限
        -w 有写的权限
        -x 有执行的权限
        -f 文件存在并且是一个常规的文件
        -s 文件存在且不为空
        -d 文件存在并是一个目录
        -b文件存在并且是一个块设备
        -L 文件存在并且是一个链接

**SHELL自定义函数:

语法:

function funname()
{
action;
[return int;]
}
For example:function start() / function start / start()

小例子:

----------------------------

#!/bin/bash
fSum()
{
echo $1,$2
return $(($1+$2))
}
total=$?
echo "第一次点调用后返回的结果: "$total
fSum 5 7
total=$?
echo $total,$?

PS:妈呀,由于本人愚钝,花了1个小时才找到了代码的问题所在,原来是直接粘过去的代码在SHELL语言

   里不能加Tab键呐!!!之前怎么跑都不好使,只是显示echo: command not found报错,网上查

   了N种可能也都不行,于是一行行的找毛病,终于发现了问题所在。之后对其进行了一番试验,为

   啥空格加在echo之前好使,而Tab键加在之前就不好使了呢?为啥直接在SHELL里编辑加了Tab键却

   好使呢?哎,还是我太嫩了,一点点的积累经验吧。

-------------------------

#!/bin/bash
demoFunction(){
echo "This is my demo shell function!"
}
echo "Function is begining..."
demoFunction
echo "Function is ending!"

---------------------------

#!/bin/bash
funSum(){
echo "Sum of two numbers..."
echo -n "Input a number: "
read Num1
echo -n "Input another number: "
read Num2
echo "The two numbers are $Num1 and $Num2 !"
return $(($Num1+$Num2))
}
funSum
echo "The sum of two numbers is $? !"

**脚本调试:

      第一种:sh -vx test.sh

      第二种:set -x (在脚本中增加)

SHELL脚本的常规命令的更多相关文章

  1. shell脚本一条命令直接发送http请求(xjl456852原创)

    我们知道nc命令是一个网络工具.可以连接tcp/udp.也能模拟发送http请求. 现在介绍通过shell脚本,一条命令直接发送http请求. 命令如下,可以对下面的地址等信息自行修改: #!/bin ...

  2. shell脚本中sqlite3命令查询数据库失败返回空,并将错误信息打印到标准错误输出

    shell脚本中sqlite3命令查询数据库失败返回空,并将错误信息打印到标准错误输出 如: #/bin/sh local ret='sqlite3 test.db "select test ...

  3. centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课

    centos   shell脚本编程1 正则  shell脚本结构  read命令  date命令的用法  shell中的逻辑判断  if 判断文件.目录属性  shell数组简单用法 $( ) 和$ ...

  4. (转)shell脚本之seq命令

    shell脚本之seq命令 原文:http://blog.csdn.net/paoxiaohui/article/details/52830595 seq 用于生成从一个数到另一个数之间的所有整数. ...

  5. shell脚本批量执行命令----必需判断上一步执行结果--没有捷径

    # 注意:shell脚本批量执行命令,不能只写一个函数,然后把所有命令复制进去,之前试过这样是不行的.必须要有一个判断命令执行成功与否的语句 # 简单的命令可以不加结果判断符号,但是遇到解压包.sed ...

  6. shell 脚本之获取命令输出字符串以及函数参数传递

    在ubuntu 14.04之后,所有的U盘挂载也分用户之分,最近很多操作也和U盘有关,所以就研究了一上午shell脚本函数以及字符串操作的方法. 字符串操作: 获取他的命令输出比较简单,打个简单的比方 ...

  7. Shell脚本中cd命令使用

    在写shell脚本的时候发现cd切换目录的时候无法切换,代码是下面的. #!/bin/bash #changedir.sh history cd /home/firefox sleep pwd 我仔细 ...

  8. 通过ant调用shell脚本执行adb命令

    在Hudson或者Jenkins中利用ant的exec 来调用shell命令,通过shell脚本来执行adb shell命令,可以正常执行,不会出现在ant中直接调用adb shell出现的假死情况. ...

  9. 查看当前支持的shell,echo -e相关转义符,一个简单shell脚本,dos2unix命令把windows格式转为Linux格式

    /etc/shells [root@localhost ~]# more /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bi ...

随机推荐

  1. mysql必知必会学习笔记(1)

    chapter 13 13.1 数据分组 如果要将数据分为多个逻辑组怎么办?? 要用数据分组 13.2 创建分组 使用group by子句.group by会指示对mysql进行分组,然后对每个组进行 ...

  2. Java的Map和Object之间的相互转换方法

    public staic Map<String, Object> objectToMap(Object obj) throws Exception { if(obj == null) re ...

  3. 面向对象(OOP)二

    一.“魔术”函数 - 自动调用 魔术方法 在面向对象有一些特别的方法,无需特别定义,已自动具备某些功能,例如构造函数__construt,这些方法统称魔术方法,在日后的编程中,可以使用这些方法的特性设 ...

  4. 初始socket

    一.客户端/服务器架构 1.C/S结构,即Client/Server(客户端/服务器)结构 2.我们在互联网中处处可见c/s架构比如说浏览器,qq,lol,视频软件... 3.我们学习socket就是 ...

  5. pm2部署node应用

    背景: 很早就知道了pm2的强大功能,部署,多进程部署,负载均衡等等,但是一直没有取尝试使用,每次写完代码就没关心部署的事了.最近有空就想着把pm2的部署流程走一遍,顺便整理出来. 环境: 1.本地: ...

  6. (已解决)Arduino mega2560 R3插在电脑上没有反应

           OK,话不多说.网上找了一些资料,感觉都说的不够清晰.自己琢磨了下,有了一个简单粗暴的方法. 步骤1:插上Arduino mega2560板子.没有反应. 步骤2:我的电脑-管理-设备管 ...

  7. TCP 协议中的 Window Size与吞吐量

    原地址:http://blog.sina.com.cn/s/blog_c5c2d6690102wpxl.html TCP协议中影响实际业务流量的参数很多,这里主要分析一下窗口的影响. ​TCP窗口目的 ...

  8. uLua学习之调用Lua函数(五)

    前言 在我开始这个系列的第一篇文章中,我就提到了Lua脚本用来实现宿主脚本的配置性和扩展性.上节说到的调用外部Lua脚本就对应了它的两大特性之一的配置性,那么另一大特性如何来体现呢?这就要说我们今天的 ...

  9. Payoneer个人账户注册申请教程

    1)照牛排于2013年末写的<免费申请Payoneer万事达预付卡+美国银行账号教程>非常详尽,网友纷纷转载,但生命在于折腾,Payoneer官网几经改版,自2015年3月推出无卡账户以来 ...

  10. Html+css实现带图标的控件

    </pre><pre name="code" class="html"><!DOCTYPE html> <html l ...