【Bash Shell】从零开始01

【Bash Shell】从零开始01

【Bash Shell】从零开始02

  1. 作为Bash Shell 的初学者,平时练习时候不应该使用root权限账户,以免对系统造成不可预估后果

  2. 什么是Shell的种类?通常习惯上所说的多少种Shell是指多少种Shell脚本解释器,例如有bash、sh、csh、ksh等

  3. Shell变量名不可以使用"$"符号,因为使用Shell的时候用”$“符号来区分变量和变量名(或者说字符)

  4. 使用变量名时,直接在变量名前加上"$"符号即可,为了帮助解释器识别变量的边界,可以在变量名加上花括号,但是花括号是可选的,例如:echo ${your_name} 等价于echo $your_name

  5. Shell 的”=“左右两边不可以有空格,这点有别于其他语言!!!

  6. Shell含有一些特殊变量

    特殊变量 含义 示例
    $ 当前Shell进程的ID,即pid $echo $$
    0 当前脚本的文件名 $echo $0
    n 传递给脚本或函数的参数,类似与main函数中的参数 $echo $n
    # 传递给脚本或函数的参数个数 $echo $#
    * 传递给脚本或函数的所有参数 $echo $*
    @ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同 $echo $@
    ? 上个命令的退出状态,或函数的返回值 $echo $?
  7. Shell中的转移字符并不能自动转化(相对而言),需要在命令中加入参数,例如:

    #!/bin/bash
    a=10
    echo -e "Value of a is $a \n"

    这里的运行结果是:"Value of a is 10";-e表示对转义字符进行替换。

    如果不使用-e选项,将会原样输出:"Value of a is 10\n"

  8. 转移字符 名称
    \\ 反斜杠
    \a 警报,响铃
    \b 退格(删除键)
    \f 换页(FF),将当前位置移到下页开头
    \n 换行
    \r 回车
    \t 水平制表符(tab键)
    \v 垂直制表符

    可以使用 echo 命令的 -E 选项禁止转义,默认也是不转义的;使用 -n 选项可以禁止插入换行符。

  9. 命令替换是指Shell可以先执行命令,将输出结果暂时保存,在适当的地方输出。

    命令替换的语法:`command`

    注意是反引号,不是单引号,这个键位于 Esc 键下方。

  10. 运算符关系

    -eq

    检测两个数是否相等,相等返回 true。[a−eqb ] 返回 true。
    -ne

    检测两个数是否相等,不相等返回 true。[a−neb ] 返回 true。

    -gt

    检测左边的数是否大于右边的,如果是,则返回 true。[a−gtb ] 返回 false。

    -lt

    检测左边的数是否小于右边的,如果是,则返回 true。[a−ltb ] 返回 true。

    -ge 检测左边的数是否大等于右边的,如果是,则返回 true。[a−gea−geb ] 返回 false。
    -le 检测左边的数是否小于等于右边的,如果是,则返回 true。[a−leb ] 返回 true。
    #!/bin/sh a=10 b=20
    
    if [ $a -eq $b ]
    
    then
    
    echo "$a -eq $b : a is equal to b"
    
    else echo "$a -eq $b: a is not equal to b"
    
    运行结果:
    
    10 -eq 20: a is not equal to b
  11. 文件测试运算符列表
    指令 指令描述
    -b file检测文件是否是块设备文件,如果是,则返回 true。[ -b $file ] 返回 false。
    -c file检测文件是否是字符设备文件,如果是,则返回 true。[ -b $file ] 返回 false。
    -d file检测文件是否是目录,如果是,则返回 true。[ -d $file ] 返回 false。
    -f file检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。[ -f $file ] 返回 true。
    -g file检测文件是否设置了 SGID 位,如果是,则返回 true。[ -g $file ] 返回 false。
    -k file检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。[ -k $file ] 返回 false。
    -p file检测文件是否是具名管道,如果是,则返回 true。[ -p $file ] 返回 false。
    -u file检测文件是否设置了 SUID 位,如果是,则返回 true。[ -u $file ] 返回 false。
    -r file检测文件是否可读,如果是,则返回 true。[ -r $file ] 返回 true。
    -w file检测文件是否可写,如果是,则返回 true。[ -w $file ] 返回 true。
    -x file检测文件是否可执行,如果是,则返回 true。[ -x $file ] 返回 true。
    -s file检测文件是否为空(文件大小是否大于0),不为空返回 true。[ -s $file ] 返回 true。
    -e file检测文件(包括目录)是否存在,如果是,则返回 true。[ -e $file ] 返回 true。
    #!/bin/sh file="/var/www/tutorialspoint/unix/test.sh"
    
    if [ -r $file ]
    
    then
    
    echo "File has read access"
    
    else echo "File does not have read access"

猜你喜欢

转载自blog.csdn.net/m0_37811192/article/details/81572479