shell脚本学习笔记

来源:互联网 发布:mysql show 退出 编辑:程序博客网 时间:2024/05/16 00:50
  1. echo "name 'YUYUFEN'"
  2. echo -n "name :";不换行
  3. 可以用set命令来显示一份完整的当前环境变量列表
  4. 有两种方法可以将命令输出赋给变量

``

$()

  1. wc

q文本的行数

q文本的词数

q文本的字节数

  • 内联输入重定向(inline input redirection)

$wc << EOF
> test string 1
> test string 2
> test string 3
> EOF

  • expr 5 * 2
  • bash中,在将一个数学运算结果赋给某个变量时,可以用美元符和 方括号($[ operation ])将数学表达式围起来
  • bc访问shell的计算器

quit退出

浮点运算是由内建变量scale控制的。必须将这个值设置为你希望在计算结果中保留的小数位数,否则无法得到期望的结果

  • shell脚本中使用bc

variable=$(echo"options; expression" | bc)

var1=$(echo "scale=4; 3.44 /5" | bc),保留4位小数的浮点计算结果

  • Linux提供了一个专门的变量$?来保存上个已执行命令的退出状态码。

shell中运行的每个命令都使用退出状态码(exit status)告诉shell它已经运行完毕。退出状态 码是一个0~255的整数值,在命令结束运行时由命令传给shell

  • 你可以改变这种默认行为,返回自己的退出状态码。exit命令允许你在脚本结束时指定一 个退出状态码。

exit  5;

exit $var1

$ echo $?  5

 

 

  • bash shellif语句会运行if后面的那个命令。如果该命令的退出状态码(参见第11章)是0(该命令成功运行),位于then部分的命令就会被执行。如果该命令的退出状态码是其他值,then部分的命令就不会被执行,bash shell会继续执行脚本中的下一个命令

 

 

10.31

  • if后面跟普通的shell命令,如果返回0,那么执行then,如果执行错误,则else
  • if对其它条件的判断,可以考虑
    • test conditionj
    • [ condition ],[加空格]
  • 复合条件

[ condition1 ] && [ condition2 ]两个条件都成立执行then之后的

[ condition1 ] || [ condition2 ]只要其中一个成立

  • ((expression ))

expression可以是任意的数学赋值或比较表达式

  • [[expression ]]

双方括号里的expression使用了test命令中采用的标准字符串比较。但它提供了test命令未提供的另一个特性——模式匹配(pattern matching)。

比如:if [[ $USER == r* ]],以r开头的字符串

  • casevariablein

pattern1| pattern2)commands1;;pattern3)commands2;;

*)default commands;;

esac

  •