**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. 一,JVM 自带命令行工具之JPS

    jps:虚拟机进程状况工具 可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(main class,class()函数所在的类)的名称,以及这些进程的本地虚拟机的唯一ID. jps命令格式: jps ...

  2. Spark Mllib里的如何对两组数据用皮尔逊计算相关系数

    不多说,直接上干货! import org.apache.spark.mllib.stat.Statistics 具体,见 Spark Mllib机器学习实战的第4章 Mllib基本数据类型和Mlli ...

  3. bash和zsh切换

    zsh切换bash bash切换zsh 切换bash chsh -s /bin/bash 切换zsh chsh -s /bin/zsh

  4. 新浪php面试题

    1. echo count("abc"); 输出什么?答:"1" count — 计算数组中的单元数目或对象中的属性个数int count ( mixed $v ...

  5. EF增删查改加执行存储过程和sql语句,多种方法汇总

    ActionUrl c = new ActionUrl() { ActionName="test", RequestUrl="/123/123", SubTim ...

  6. Android Asynchronous Http Client

    Features Make asynchronous HTTP requests, handle responses in anonymous callbacks HTTP requests happ ...

  7. 虚拟机安装CentOS7 Minimal、jdk和hadoop

    虚拟机安装CentOS7 Minimal.jdk和hadoop Table of Contents 1. 安装版本 2. PD安装 3. vim安装和配置 4. 主机名变为bogon的解决办法 5. ...

  8. 【php】

    1 <?php $arr = [ 'a' => 'aaa', ]; $arr2 = $arr; $arr2['a'] = 'ccc'; print_r($arr); print_r($ar ...

  9. android通过fiddler代理,抓取网络请求

    安装fiddler过程省略 1, 2, 3, 4,手机需要跟电脑处于同一局域网,设置网络代理为电脑在局域网内的ip,端口为3步设置的port 5,电脑就可以通过fiddler监控手机的所有网络请求了( ...

  10. jquery的trigger和triggerHandler区别

    网上关于这个问题都是抄来抄去的,都没怎么说清楚.所以自己做了个测试,供大家参考指教.首先先看API怎么说的 为了检验一下,编写了一个简单的测试代码,如下: <html lang="en ...