// 其余杂项知识点 对于普通用户,Base shell 默认的提示符是美圆符号$;对于超级用户(root 用户),Bash Shell 默认的提示符是井号# ------- \#!是一个约定的标记,它告诉系统这个脚本须要什么解释器来执行,即便用哪种Shell;后面的/bin/bash就是指明了解释器的具体位置 ------- read 命令用来从标准输入读取用户输入的数据 ------- 点号用于执行某个脚本,甚至脚本没有可执行权限也能够运行。有时候在测试运行某个脚本时可能并不想为此修改脚本权限,这时候就能够使用.来运行脚本,很是方便。 ------- sh-3.2# echo $SHELL // 查看系统使用的shell为bash /bin/sh sh-3.2# bash --version // 查看bash版本 等同 echo $BASH_VERSION GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin17) Copyright (C) 2007 Free Software Foundation, Inc. -------- 字符串截取操做 ${string: start :length} // 从0开始 截取的长度(能够省略,省略长度表明截取到末尾) hello='Hello World!' echo ${hello:6:5} // 从6开始截取5个字符 echo ${hello:6} // 截取到末尾 hello='Hello World!' // 从指定字符开始截取到末尾 echo ${hello#*o} // \#表明指定截取 \*通配左边全部字符 sh-3.2# echo ${hello#r} Hello World! sh-3.2# echo ${hello#Hello Wor} // 不使用通配符也行 # 截取右边字符,忽略左边 sh-3.2# echo ${hello#*o} // 默认从第一个指定字符开始 World! sh-3.2# echo ${hello##*o} // 从最后一个指定字符开始匹配 rld! % 截取左边,忽略右边 (跟#相反) sh-3.2# echo ${hello%o*} Hello W sh-3.2# echo ${hello%%o*} Hell -------- 数组合并 sh-3.2# arr1=(1 2 3) sh-3.2# arr2=(4 5 6) sh-3.2# arr3=(${arr1[@]} ${arr2[@]}) sh-3.2# echo ${arr3[@]} 1 2 3 4 5 6 -------- /etc/bashrc 文件 alias hello='ls -l' // 添加alias别名 source 执行一下 -------- `` 反引号和 $() 差很少,字符串将解释成shell命令来执行 z:~ k$ for i in `ls`; do > echo $i > done Applications Applications (Parallels) Desktop z:~ k$ -------- ((表达式)) 多个表达式之间以逗号,分隔, sh-3.2# echo $((a=2,b=3)) // $获取 (( )) 命令的结果 3 // 以最后一个表达式的值做为整个 (( )) 命令的执行结果 // 使用变量时不用加$前缀,(( )) 会自动解析变量名 sh-3.2# a=2 sh-3.2# b=3 sh-3.2# echo $((a)) 2 let 也是表达式求值 和(())同样,只是当是多个表达式时,是以空格为分割 sh-3.2# let a=1 b=2 sh-3.2# echo $a $b 1 2 $[] 跟let (()) 也差很少 sh-3.2# echo $[1+2] 3 -------- expr 整数计算 sh-3.2# expr 1 + 2 3 sh-3.2# expr 1 \* 3 3 sh-3.2# a=1 sh-3.2# expr $a 1 sh-3.2# expr \( 1 \* 3 \) + 2 // 括号也要转义 5 -------- for 循环 for((exp1; exp2; exp3)) do xxx done -------- 退出状态 每一条 Shell 命令,当它退出(运行结束)时,都会返回一个整数值给调用(使用)它的程序,即命令的退出状态 if 语句的判断条件,从本质上讲,判断的就是命令的退出状态 按照惯例来讲,退出状态为 0 表示“成功”;也就是说,程序执行完成而且没有遇到任何问题。除 0 之外的其它任何退出状态都为“失败” sh-3.2# echo $(( 1 * 2 )) 2 sh-3.2# echo $? 0 // 0成功 sh-3.2# abcdefg sh: abcdefg: command not found sh-3.2# echo $? 127 // 失败 -------- select in 循环,它能够显示出带编号的菜单,用户输入不一样的编号就能够选择不一样的菜单,并执行不一样的功能 sh-3.2# select name in "aa" "bb" "cc" "dd" \> do \> echo $name \> done 1) aa 2) bb 3) cc 4) dd \#? 1 aa \#? 2 bb \#? 3 cc \#? 4