红帽RHCE培训记录(二)

shell 编程

  1. 绝对路径 /root/scripts/file.sh #要有执行权限
  2. 相对路径 ./file.sh #要有执行权限
  3. bash + 脚本名 #不需要执行权限和编译
  4. source 脚本名 #脚本中的变量会在当前 shll 生效

前面三种是在子 shell 中执行,第四种是在当前 shell 执行

$[],中括号里面可以进行运算

位置化参数

$0 脚本名
$1 第1个参数
$* 所有的参数,双引号引起来时参数视为单个字符串
$@ 所有的参数,双引号引起来时,每个参数作为一个个体
$# 参数的个数
$$ 当前进程的 PID
$? 上一个命令的返回值,0表示成功

read

从命令行中输入字符串,赋值给一个变量

read -p "Enter your name:" NAME
[student@example Documents]$ read -p "Enter your name:" NAME
Enter your name:zhangsan
[student@example Documents]$

不加变量名,默认赋值给 REPLY 变量。

-t 超时时间(秒)

exit 退出码

程序执行后会携带一个退出码
0 代表成功,1-255 代表失败;储存在系统变量 $? 中;exit num 可以中断程序并设置退出码为 num

例如,判断 /etc/profile 文件里是否有关键字 HISTSIZE

[student@example Documents]$ grep HISTSIZE /etc/profile
HISTSIZE=1000
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
[student@example Documents]$ echo $?
0

条件执行运算符

&& 代表逻辑与,前一个命令执行成功会执行后一个
|| 代表逻辑或,前一个命令执行成功,后面的命令不会再执行

布尔运算符

! 非运算
-o 或运算
-a 与运算

数值运算符

红帽RHCE培训记录(二)

判断变量是不是数字:

[["$num10" =~ ^[0-9]+$ ]]

ps: shell中各种括号的作用()、(())、[]、[[]]、{}

字符串运算符

= 检测两个字符串是否相等。 等于返回 0 [ $a = $b ]
!= 检测两个字符串是否相等。等于返回 1 [ $a != $b ]

[ -n “$A” ] 判断变量是否定义

条件判断

if 条件表达式
then
指令
fi
if 条件表达式;then
指令
fi
if 条件表达式;then
指令1
else
指令2
fi
if 条件表达式1;then
指令1
elif 件表达式2;then
指令2
else
指令3
fi

case语句

case 变量名 in
  值1)
    指令1
    ;;
  值2)
    指令2
    ;;
  *)
    指令4
    ;;
esac

for循环

直接列出元素

for i in 1 3 5
do
  指令
done

使用大括号

for i in {1...5}
do
  指令
done

使用 seq

for i in $(seq 1 5)
do
  指令
done

使用命令的结果

for i in $(ls *.sh)
do
  指令
done

(未完待续)

上一篇:Android开发分渠道打包之友盟篇


下一篇:Android通过包名获取应用信息