• 基本shell编程【1】


    ” 和 “” 的区别:前者中的字符串被视为纯文本,后者中的特殊字符会被识别,变量会被替换,例如echo “$a”,后者会打印出a的value。

    shell的第一行必须是#!/bin/bash (以bash为例,还有其他的shell)。这么做的脚本可以直接以命令行执行./myscript 。 否则需要成为sh的参数,sh myscript。

    #表示注释,除了#!(上面讲了)

    语句后不需要分号。

    • shell脚本中的系统变量
        $0 这个程序的执行名字
        $n  这个程序的第n个参数值,n=1…9
        $*  这个程序的所有参数
        $# 这个程序的参数个数
        $$ 这个程序的PID
        $! 执行上一个背景指令的PID
        $? 上一个指令的返回值 
     
    • shell脚本中的括号
          上图:date是一个命令。out是一个变量
        
    总结: $是取值的意思,${a} $a表示取变量,$(a)表示取命令的执行结果。 ${#a}表示取变量的长度。
     
    表示命令的执行结果,有两种方式:使用 `expr 1 + 2 ` 或是$(expr 1 + 2)
     
    表示数学运算,可以直接使用 $[ 1 + 2 ] 或是 $(( 1 + 2 )) 或是 let a=1+2  (注意空格!!!!)
    上面这句话的意思是a=1 和a = 1的含义是不同的,这对于高级语言的编码人员来讲有点难适应,一般white space都是没有意义的,至少我之前是这么认为。
     
    • 赋值
    a=1 注意空格
    a=$(ls /home)
     
     
    • 伟大的if 
    一段脚本真正有点用处最离不开的是if。
     
    接下来开始讲条件,常用的如下:
    文件比较运算符
    -e filename  如果 filename 存在,则为真 [ -e /var/log/syslog ] 
    -d filename  如果 filename 为目录,则为真 [ -d /tmp/mydir ] 
    -f filename  如果 filename 为常规文件,则为真 [ -f /usr/bin/grep ] 
    -L filename  如果 filename 为符号链接,则为真 [ -L /usr/bin/grep ] 
    -r filename  如果 filename 可读,则为真 [ -r /var/log/syslog ] 
    -w filename  如果 filename 可写,则为真 [ -w /var/mytmp.txt ] 
    -x filename  如果 filename 可执行,则为真 [ -L /usr/bin/grep ] 
    filename1 -nt filename2  如果 filename1 比 filename2 新,则为真 [ /tmp/install/etc/services -nt /etc/services ] 
    filename1 -ot filename2  如果 filename1 比 filename2 旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ] 
    字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法) 
    -z string  如果 string 长度为零,则为真 [ -z "$myvar" ] 
    -n string  如果 string 长度非零,则为真 [ -n "$myvar" ] 
    string1 = string2 如果 string1 与 string2 相同,则为真 [ "$myvar" = "one two three" ] 
    string1 != string2 如果 string1 与 string2 不同,则为真 [ "$myvar" != "one two three" ] 
    算术比较运算符 
    num1 -eq num2 等于 [ 3 -eq $mynum ] 
    num1 -ne num2 不等于 [ 3 -ne $mynum ] 
    num1 -lt num2 小于 [ 3 -lt $mynum ] 
    num1 -le num2 小于或等于 [ 3 -le $mynum ] 
    num1 -gt num2 大于 [ 3 -gt $mynum ] 
    num1 -ge num2 大于或等于 [ 3 -ge $mynum ]
     
    顺便提一下,条件除了被应用于if,还可以用于while。while的结构为
    while 条件
    do
       echo “haha”
    done
  • 相关阅读:
    Android 自定义标题栏 并进行事件处理
    java synchronized详解
    Java中LinkedList与ArrayList有什么区别
    android动态全屏切换
    java线程机制介绍
    设置导航栏背景和文字属性
    Dictionary的用法
    bundle
    解析Json
    Copy与MutableCopy
  • 原文地址:https://www.cnblogs.com/violinn/p/3083941.html
Copyright © 2020-2023  润新知