shell与linux命令使用

1 shell

1.1 $( )与反引号 ` `   参考

  $()与 ` `都是用来做命令替换的,也就是$()与 ` `内的内容都会被当成命令,完成命令重组功能。在多层次的复合替换中,尽量使用\$()。

ommand1 `command2 `command3` `
    原本的意图是要在 command2 `command3` 先将 command3 提换出来给 command 2 处理,然后再将结果传给 command1 `command2 …` 来处理。然而,真正的结果在命令行中却是分成了 `command2 ` ``两段。
    正确的输入应该如下:
command1 `command2 \`command3\` `

    换成 $( ) 就没问题了:
command1 $(command2 $(command3))

  ` ` 基本上可用在全部的 unix shell 中使用,若写成 shell script ,其移植性比较高。而 $( ) 并不见的每一种 shell 都能使用。

1.2 ${}  参考

  ${}可以用来作变量替换,${}内的内容会被当成变量,实际上$var与${var}中,var都会被当成变量。但是当变量后如果跟有字符串时,用${}代码会更清晰。如$vari和${var}i,前者vari会被当成一个变量,而后者是var变量替换后再跟i
  ${}还可以用来操作字符串,作用类似linux中的str类函数。
  

${#var}        //获取字符串长度
${var#*/}      //去掉从左边开始直到第一个/(包含/)
${var##*/}     //去掉从左边开始直到最后一个/(包含/)
${var%/*}      //去掉从右边开始直到第一个/(包含/)
${var%%/*}     //去掉从右边开始直到最后一个/(包含/)
${var:start:len}//从左边第start个字符开始以及子串中字符的个数,下标与数组相同,从0开始
${var:start}   //从左边第start个字符开始一直到结束
${var:0-start:len}//从右边第start个字符开始以及字符的个数
${var:0-start}  //从右边第start个字符开始一直到结束

  下面是使用示例

var=https://mp.csdn.net/mdeditor
echo ${#var}              // 28    
echo ${var#*/}            // /mp.csdn.net/mdeditor
echo ${var##*/}           // mdeditor
echo ${var%/*}            // https://mp.csdn.net
echo ${var%%/*}           // https:
echo ${var:11:4}          // csdn
echo ${var:11}            // csdn.net/mdeditor
echo ${var:0-12:3}        // net
echo ${var:0-12}          // net/mdeditor

  可以用${ } 针对不同的变量状态赋值(未定义(unset)、空值(null)、非空值(non-null)),unset在shell中是删除已定义的shell变量(包括环境变量)和shell函数,unset命令不能够删除具有只读属性的shell变量和环境变量

${file-test}   file 未定义,则使用 test 作传回值。(空值及非空值时不作处理) 
${file:-test}  file 未定义或为空值,则使用 test 作传回值。 (非空值时不作处理)
${file+test}   file 设为空值或非空值,均使用 test 作传回值。(未定义时不作处理)
${file:+test}  file 为非空值,则使用 test 作传回值。 (未定义及空值时不作处理)
${file=test}	file 未定义,则使用 test 作传回值,同时将 $file 定义为 test 。 (空值及非空值时不作处理)
${file:=test}	file 未定义或为空值,则使用 test 作传回值,同时将 $file 定义为 test 。 (非空值时不作处理)
${file?test}   file 未定义,则将 test 输出至 STDERR。 (空值及非空值时不作处理)
${file:?test}  file 未定义或为空值,则将 test 输出至 STDERR。 (非空值时不作处理)

1.3 $(( )) 用来作整数运算

  在shell中,$(( )) 的整数运算符号大致有这些:+ - * / :分别为 “加、减、乘、除”;% :余数运算;& | ^ !:分别为 “AND、OR、XOR、NOT” 运算。都是常见的运算符,$(( ))内被当成运算表达式。示例:

a=1; b=2; c=3
echo $((a + b + c)) # 也可以加$来表示变量:echo $(($a + $b + $c))
6

  $(( )) 还可作不同进位(如二进制、八进位、十六进制)作运算,只是,输出结果皆为十进制而已
$((16#FF))返回16进制数0xFF的十进制值。
  纯用 (( )) 也可重定义变量值,或作测试(相当于[ ]):
a=5; ((a++)) 可将 $a 重定义为 6
a=5; b=7; ((a < b)) 会得到 0 (true) 的返回值。
  常见的用于 (( )) 的测试符号有如下这些:

<:小于
>:大于
<=:小于或等于
>=:大于或等于
==:等于
!=:不等于
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值