bash_基础


变量(代码编写)注意事项

01) ;分号是命令界定符;

02) 变量默认为全局变量

03) 双引号内能解释变量,但变量替换在单引号中无效;

04) 本质上, bash变量是不区分类型的, 都是字符串. 但是依赖于具体的上下文;

05) 无论变量赋值时有没有引号,都会以字符串的形式存储;

06) bash允许 比较操作 和 整数操作. 其中的关键因素就是, 变量中的值是否只有数字;

07) *注意 设置一个变量为null, 与unset这个变量, 并不是一回事 虽然最终的结果相同;

08) 可以在同一行上设置多个变量,但是必须以空白进行分隔;

09) 强烈注意, 在赋值的的时候, 等号前后一定不要有空格;

10) =前后各有空格,是比较关系。没有空格是赋值关系;

11) 如果在变量中存在空白;

    If there is whitespace embedded within a variable

    # 那么就必须加上引用
    'If there is whitespace embedded within a variable'
    # 不过也可以采用将空白转义的方法.
    If\ there\ is\ whitespace\ embedded\ within\ a\ variable

错误的命名

    VARIABLE =value
        脚本将尝试运行一个 VARIABLE 的命令, 带着一个 =value 参数.

    var1=21  var2=22  var3=$V3
        $慎用, 这么做会降低可读性, 并且不可移植.
12) echo 默认会在行尾加换行符,可用
    -n 忽略换行符
    echo If\ there\ is\ -n dog

运算符

let

# echo ${x}
let x=16+5     #21
let 'x += 5'   #26
let 'x *=  5'  #130
let 'x /= 5'   #26

let 'x = 5 * 9' #45

expr

echo `expr 4 + 5`  #9
echo `expr 4 \* 5` #20

条件语句

如果想在同一行上再写一个新的表达式的话, 那么必须使用分号来结束上一句表达式
if [ condition1 ]
then
  command
elif [ condition1 ]
  command
else
  command
fi

true

[ 0 ]
[ 1 ]
[ -1 ]
[ xyz ]

false

[  ]


文件类型判断


-e file    //-该文件名是否存在

-f file    //-该文件名是否存在 且 是一个文件 [ -f "somefile" ]

-s file    //-该文件名是否存在 且 为非空白文件 文件长度不为0

-d file    //-该文件名是否存在 且 是一个目录

-b file    //-该文件名是否存在 且 是block device 块设备(软盘,cdrom等等)

-c file    //-该文件名是否存在 且 是character device 字符设备(键盘,modem,声卡等等)

-S file    //-该文件名是否存在 且 为一个Socket文件

-p file    //-该文件名是否存在 且 为一个FIFO(pipe)文件

-L file    //-该文件名是否存在 且 为一个链接文件

-h file    //-文件是软链接,则为真

-t file    //-当文件描述符(默认为1)指定的设备为终端时为真

权限判断


-r file    //-该文件名是否存在 且 有 可读 权限

-w file    //-该文件名是否存在 且 有 可写 权限

-x file    //-该文件名是否存在 且 有 可执行 权限
           //[ -x "/bin/ls" ]//判断/bin/ls是否存在并有可执行权限

-g         set-group-id(sgid)标志到文件或目录上

-u         // set-user-id(suid)标志到文件上

-f file    //-文件为正规[常规]文件为真 (例如,if [ -f "filename" ])

-O file    //-检查file是否存在 且 属当前用户所有

-G file    //-检查file是否存在 且 默认组与当前用户相同

-N         //-从文件最后被阅读到现在 是否被修改

文件比较


-nt    //-检查 file1 是否比 file2 新
-ot    //-检查 file1 是否比 file2 旧
-ef    //-检查 file1 与 file2 是否为同一个文件,可用在判断 hard link 的判定上
       //-判定两个是否都指向同一 inode

数值比较


-eq    //—比较两个参数是否相等(例如,if [ 2 –eq 5 ])

-ne    //—比较两个参数是否不相等

-gt    //—参数1是否大于参数2

-ge    //—参数1是否大于等于参数2

-lt    //—参数1是否小于参数2

-le    //—参数1是否小于等于参数2

判定字符串数据


-z  test -z string    //- string 为空字符串(null) 则为 true 数字0不为空

-n  test -n string    //- string 不为空字符串(null)则为 true
                      // [ -n "$var" ]判断$var变量是否有值

=   test str1 = str2    //- str1 是否等于 str2, 相等则回传 true
    [ "$a" = "$b" ]     //判断$a和$b是否相等

!=  test str1 != str2  //- str1 是否不等于 str2  不相等则回传 true

<   str1  <  str2      //- 检查str1是否比str2小

 >  str1  >  str2      //- 检查str1是否比str2大

需要注意的是:
<  <  =  >  >=  //-整数操作中必须加(())
                //-字符串比较大于小于号必须转义,即加反斜线。
                //-字符串比较的顺序是按ASCII表的顺序的,大写字母比小写字母的值小

多重条件判定


-a      //- 所有条件都成立 返回 true   test -r file -a -x file
-o      //- 只要有一个条件成立就返回 true
!       //- 取反


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值