shell脚本学习笔记

  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 shell的if语句会运行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开头的字符串

  • case variable in

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

*) default commands;;

esac

  •  

你可能感兴趣的:(操作系统基础)