【Bash Shell】从零开始01

发布于:2021-10-18 22:12:46

【Bash Shell】从零开始01


【Bash Shell】从零开始02


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

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

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

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

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

    Shell含有一些特殊变量


    特殊变量含义示例
    $当前Shell进程的ID,即pid$echo $$
    0当前脚本的文件名$echo $0
    n传递给脚本或函数的参数,类似与main函数中的参数$echo $n
    #传递给脚本或函数的参数个数$echo $#
    *传递给脚本或函数的所有参数$echo $*
    @传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同$echo $@
    ?上个命令的退出状态,或函数的返回值$echo $?

    Shell中的转移字符并不能自动转化(相对而言),需要在命令中加入参数,例如:

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

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

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


    转移字符名称
    \反斜杠
    a警报,响铃
    退格(删除键)
    f换页(FF),将当前位置移到下页开头

    换行
    回车
    水*制表符(tab键)
    v垂直制表符

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

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

    命令替换的语法:`command`

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

    运算符关系

    -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

    ?

    文件测试运算符列表
    指令指令描述
    -bfile检测文件是否是块设备文件,如果是,则返回 true。[ -b $file ] 返回 false。
    -cfile检测文件是否是字符设备文件,如果是,则返回 true。[ -b $file ] 返回?false。
    -dfile检测文件是否是目录,如果是,则返回 true。[ -d $file ] 返回 false。
    -ffile检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。[ -f $file ] 返回?true。
    -gfile检测文件是否设置了 SGID 位,如果是,则返回 true。[ -g $file ] 返回?false。
    -kfile检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。[ -k $file ] 返回?false。
    -pfile检测文件是否是具名管道,如果是,则返回 true。[ -p $file ] 返回?false。
    -ufile检测文件是否设置了 SUID 位,如果是,则返回 true。[ -u $file ] 返回?false。
    -rfile检测文件是否可读,如果是,则返回 true。[ -r $file ] 返回?true。
    -wfile检测文件是否可写,如果是,则返回 true。[ -w $file ] 返回?true。
    -xfile检测文件是否可执行,如果是,则返回 true。[ -x $file ] 返回?true。
    -sfile检测文件是否为空(文件大小是否大于0),不为空返回 true。[ -s $file ] 返回?true。
    -efile检测文件(包括目录)是否存在,如果是,则返回 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"

    ?

相关推荐

最新更新

猜你喜欢