看懂 shell 脚本 (2)
- “…” 双引号可以将里面的内容作为整体,比方: “$@” 这样就等价于 $*。
- ${…} 为养成习惯所有都这样写吧,在shell中是可以直接 $name 的,其实它等价于 ${name}。
- if 语句不能直接接[] 会出现找不到if的提示,得加个空格:
- shell中很多都用到命令,若是要得到命令输出的结果,例如 cat A.txt 或者 ls /temp ,建议就使用变量定义它们,命令的内容使用 反引号 ``括起来, 然后在使用 “${…}” 这样就可以获得命令执行后结果的字符串,通常会根据这些字符串进行判断,走哪个逻辑,下面是例子:
#!/bin/bash
A=`ls ./mtk7561 -l | grep "version" | awk -F " " '{print $9}'`
echo "${A}"
if [ "${A}" = "version" ]; then
echo "find version!"
else
echo "not match version!"
fi
例子中A中命令的指示是 列出 ./mtk7561 目录里的信息 ,作为grep 的输入 匹配字符 “version” ,再作为 awk 的输入 ,以空格作为分隔符,打印出第9个字段
执行结果:
当不知到命令执行的内容是什么的时候,就一步一步输入,开始时我是不知道 | 作用是管道的作用,简单的说就是将前一项的输出结果作为后一项的输入,下面是我的演示范例:
- ‘…’ 是不管里面有任何特殊符号,都当整个为字符串处理,“…” 就会碰到一些特殊字符如 ’ \ $ ` 就不会当他们是正常字符处理,若想输出他们就必须得加个转义字符\ 。
- 转义字符\ 和 目录字符是 /区分开。
- 在shell中若一行写不下 可以使用 \ 连接下一语句,此时编译的时候是将他们作为同一行处理,注意 \ 前需要加空格否则就与下面的混淆了。
- ; shell中使用这个来作为命令结束符。
- cat << EOF … … … EOF 标准输出内容 (EOF没多大意义可以是任意的三个字符以内,意思是以EOF作为结束符输出内容),eg:
#!/bin/bash
cat << EOF
个人信息
···············
1)姓名
2)性别
3)年龄
···············
EOF
执行结果:
- 配合 case “xx” in “xxx”) …;; esac 用法举例:
#!/bin/bash
cat << EOF
个人信息
···············
1)姓名
2)性别
3)年龄
4) 退出
···············
EOF
while :
do
read -p "请输入数字:" a
case ${a} in
"1" )
echo "xxno"
;;
"2" )
echo "MAN"
;;
"3" )
echo "20"
;;
"4" )
echo "quit"; break
;;
esac
done
执行结果:
shell脚本中的include文件:
. 路径加文件名
或者
source 路径加文件名
DEMO:
#!/bin/sh
PROFILE_CFG=/tmp/test/pro.cfg
if [ -f ${PROFILE_CFG} ] ; then
chmod 777 ${PROFILE_CFG}
source ${PROFILE_CFG}
fi
if [ "${xxno}" = "ss" ] ;then
echo -e "\033[;7;32mHello\033[0m"
else
echo -e "\033[;7;31mBeyBey\033[0m"
fi
运行效果: