【Bash Shell】从零开始01

本文为BashShell初学者提供了一系列实用建议和技术要点,强调了避免使用root权限的重要性,并介绍了Shell脚本解释器的种类、变量使用规范及特殊变量、命令替换、条件判断和文件测试等核心概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【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. 文件测试运算符列表
    指令指令描述
    -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"

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值