set -x 进入调试模式,会把每一个命令实际执行的命令打印出来,也就是会把一些参数扩展后的样子打印出来.
set +x 退出调试模式
自定义变量:
x=7,y=8
echo `expr $x + $y` #会输出15 如果发现一些奇怪的输出,可能是由于空格导致的,所以试着加上或去掉空格
message="hello world"
echo $message 或者 echo ${message}
echo "$message"999
echo ${messsage}999
unset message #删除一个变量
shell的=左右不可以有空格,它会认为这是一个命令
set 这个命令会把所有的变量还有函数等都打出来
env会把系统变量打出来
pstree 会打印线程树
echo ${#message} 打印出字符串的长度
echo ${message:2} 会打印llo world
echo ${message:2:3} 会打印llo
echo ${message#h*l} 会打印lo world
echo ${message##h*l} 会打印o world 上面俩个的差别是#是最短匹配, ##是最长匹配 然后把匹配到的去掉
echo ${message/l/L} 会打印heLlo world
echo ${message//l/L} 会打印heLLo world
环境变量和自定义变量的区别是,环境变量是可以向子shell传递的,自定义变量不能传递.
使用export声明环境变量 在子系统中把父系统的环境变量删掉,在父系统中这个环境变量任然在.
$1-9,传入的参数,${10}以后需要加括号,$*,$@可以拿到所有的参数,$#可以拿到参数的个数,$?返回上条命令执行是否成功
echo $$ 打印出当前进程的pid
echo $! 打印出后台运行程序的pid
&& || 也可以当做条件语句来使用
declare -给变量声明类型, +给变量声明类型, -a声明为数组, -i声明为整数, -x声明为环境变量, -r声明为只读变量, -p显示被声明的类型
declare -i y=10
declare -i z=19
declare -i x=$y+$z
mesgs[0]="h"; mesgs[1]="q"; 直接这样也可以声明为数组 echo${msgs[1]} 这样对打印第二个元素 直接 echo mesgs会打印第一个元素 echo ${mesgs[*]}会把所有的元素都打印出来 还可以直接 msg=(0 1); 来声明一个数组
${#mesgs[@]} 或者 ${#mesgs[*]} 来打印数组的长度
num1=1 num2=2 num3=$(($num1+$num2)) echo $num3 会打印出来3 还有上面那种expr的方式来进行数值运算 还可以 let num3=num1+num2, 和前面的效果一样
str=abcdefg expr length $str 会打出str的长度, expr index $str "a" 会打出a的index , expr substr "$str" 1 3 会打出abc
条件语句:
if [ cond ] ; then
...
fi
if [ cond ]
then
...
if
if [ cond ]
then
..
else
..
fi

if [ cond ]
then
..
elif[ cond ]
then
..
fi
上面的cond还可以这样: cond1 -a cond2 逻辑与
                      cond1 -o cond2 逻辑或
                      !cond 逻辑非
文件判断: -b 是否为块设备文件
          -c 是否为字符设备文件
          -d 是否为目录
          -e 是否存在
          -f 是否是普通文件
          -L 是否为连接文件
          -p 是否为管道文件
          -s 是否为空
          -S 是否为套接字文件
判断文件权限: -r 是否可读
              -w 是否可写
              -x 是否可执行
              -u 是否suid权限
              -g 是否有sgid权限
              -k 是否有sbid权限
            file1 -nt file2 #file1修改时间是否比file2新
            file1 -ot file2 #file2修改时间是否比file2旧
判断数字:    -eq 判断是否相等
             -ne 判断是否不相等
             -gt 判断是否大于
             -lt 判断是否小于
             -ge 判断是否大于等于
             -le 判断是否小于等于
判断字符串:  -z 判断字符是否为空
             -n 判断字符是否为非空
             == 判断字符串是否相等
             != 判断字符串是否不相等
case 语句的语法:
 case $var in
 "val1") <---------这里的condition必须是常量
 commands
 ;;
 "val2")
 commands
 ;;
 *)
 commands
 ;;
 esac
for循环:
for var in var1 var2 var3...
do
...
done
s=0
for((i=1;i<=100;i++))
do
s=$(($s+$i))
done
echo "sum is:$s"
$*和$@的区别:
   不加引号的时候,这俩个是一样的.如果加上引号: "$*" "$@" 后,"$*"会把$*里的元素当做一个整体,而"$@"不会
while [cond]
do
...
done
i=0
while [ i -le 100 ]
do
 i=$(($i+1))
done
until [ i -ge 100 ]
do
 i=$(($i+1))
done
接受键盘收入:
 read 命令:
     -p 提示信息
     -t 等待秒数
     -n 输入的字符数
     -s 隐藏输入
 read -p "输入你的name" -t 30 name
 echo $name
 read -p "输入密码" -s passward
 echo -e '\n'
 echo $passward

shell函数:
#!bin/sh
sum 1 2; <---------这里调用不到这个函数,因为还没扫描到这个函数
function sum()
{
 echo $(($1+$2))
 return 0;
}
sum 1 3; <--------这里可以调用到这个函数

shell学习的更多相关文章

  1. shell学习总结之自定义函数

    shell学习总结之自定义函数 Myfun (){ echo -n "now i is $i " ! [ "$i" ] && exit ; ec ...

  2. SHELL学习笔记----IF条件判断,判断条件

    SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外.  if list then           do something here   ...

  3. shell学习笔记

    shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...

  4. shell学习指南-阅读笔记

    shell学习指南真不是刚开始学习shell应该看得书,虽然其中讲了简单的linux命令,shell语法等,但是每章也有些深入和生僻地方,我想如果我刚学shell看到这样的地方一定会头疼的要死.或许也 ...

  5. 【转】shell学习笔记(一)——学习目的性、特殊字符、运算符等

    1 学习shell的目的性 写之前我们先来搞清楚为什么要学shell,学习要有目的性 shell简单.灵活.高效,特别适合处理一些系统管理方面的小问题 shell可以实现自动化管理,让系统管理员的工作 ...

  6. Shell学习之结合正则表达式与通配符的使用(五)

    Shell学习之结合正则表达式与通配符的使用 目录 通配符 正则表达式与通配符 通配符 通配符的使用 正则表达式 正则表达式 正则表达式的使用 通配符 正则表达式与通配符 正则表达式用来在文件中匹配符 ...

  7. Shell学习之条件测试(四)

    Shell学习之条件测试 目录 逻辑测试 文件测试 数值比较 字符串比较 逻辑测试 格式: [ 表达式 ] 操作符 [ 表达式2 ] …… 命令1 操作符 命令2 …… 常用的操作符 ( 注意:-a和 ...

  8. Shell学习之环境变量配置文件(三)

    Shell学习之环境变量配置文件 目录 环境变量配置文件简介 环境变量配置文件作用 其他配置文件和登录信息 环境变量配置文件简介 环境变量配置文件简介 环境变量配置文件中主要是定义对系统操作环境生效的 ...

  9. Shell学习之Bash变量详解(二)

    Shell学习之Bash变量详解 目录 Bash变量 Bash变量注意点 用户自定义变量 环境变量 位置参数变量 预定义变量 Bash变量 用户自定义变量:在Bash中由用户定义的变量. 环境变量:这 ...

  10. Shell学习之Shell特性(一)

    Shell学习之Shell特性 目录 命令和文件自动补齐功能 命令历史记忆功能 history.上下键.!number.!string.!$.!! 别名功能 alias.unalias cp.~use ...

随机推荐

  1. C语言学习笔记(一)_hello world程序中涉及的c语言元素

    #include <stdio.h> //使用printf函数之前必须include<stdio.h> int main() { int i; //声明一个变量 printf( ...

  2. Iterator(迭代器)-对象行为型模式

    1.意图 提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示. 2.别名 Cursor-游标. 3.动机 一个聚合对象,应该提供一种方法来让别人可以访问它的元素,而又不需暴露它的 ...

  3. JVM垃圾收集器基本思想

    要做JVM内存垃圾回收首先要明确两个问题: 哪些内存需要回收 怎么回收 什么时候回收 1.哪些内存需要回收 jvm内存可以分为两类: 线程独占内存区域(程序计数器.虚拟机栈.本地方法栈) 线程共享区域 ...

  4. css 清除浮动最佳方法!

    .clear:after{content:'\0020';display:block;height:0;clear:both} .clear{*zoom:1}

  5. 网络-->监控-->单位换算

    The metric system In some cases when used to describe data transfer rates bits/bytes are calculated ...

  6. java多线程详解(1)-多线程入门

    一.多线程的概念 线程概念 线程就是程序中单独顺序的流控制. 线程本身不能运行,它只能用于程序中. 说明:线程是程序内的顺序控制流,只能使用分配给程序的资源和环境. 进程:操作系统中执行的程序 程序是 ...

  7. Trie / Radix Tree / Suffix Tree

    Trie (字典树) "A", "to", "tea", "ted", "ten", "i ...

  8. artTemplate里一个比不上jQuery tmpl模板的地方就是放一个数组进去它不会自动循环.

    artTemplate里一个比不上jQuery tmpl模板的地方就是放一个数组进去它不会自动循环.

  9. MFC学习笔记

    获取窗口句柄 FindWindow               根据窗口名获取 GetSafehWnd                取你程序所在窗口类的句柄 GetActiveWindow     ...

  10. db2设置共享内存

    db2 UPDATE DBM CFG USING INSTANCE_MEMORY 5242880 IMMEDIATEdb2 UPDATE DBM CFG USING INSTANCE_MEMORY A ...