总结鸟哥的linux私房菜第四版12章
\ 连接两行
#注释
echo -e "显示的内容"
exit 0 退出
read -p "提示信息" var 读取用户键盘输入变量var
"${var}" 显示var的值(而不是var这个字符串)
var=$(date --date=='2 days ago' +%Y%m%d) 使用命令给变量赋值
var=$((${var1}*${var2})) 变量赋值存在运算
touch "${var}" 新建名为var的文件
echo "运算表达式" | bc 调用计算器进行运算
程序的执行
sh filename.sh
source filename.sh
判断式
test -e /directory && echo "exist" || echo "not exist"
-f
-d
-r(w,x)
-z str 判断字符串是否为空
-o 表示或
判断符号
[ -z ${str} ] ; echo $? 注意空格,多用于if后面
每个元素都要有空格
变量需要双引号
常数单,双引号
默认变量
$0 脚本文件名,在双引号里echo "${0}"调用
$1 参数1
$2 参数2
$3 参数3
$# 表示脚本后面的参数的个数,echo "$#"
$@ 表示单独的变量,如"$1",echo "'$@'"
$* "$1 $2 $3 $4"默认分隔符为空格
shift n 向右偏移n次,但是不会删除,第二次调用仍从头开
始
条件判断
if []; then
fi
if []; then
else
fi
if []; then
elif []; then
else
fi
case $var in
"var1")
...
;;
"var2")
...
;;
*)
...
;;
esac
function函数
必须在调用语句的前面
function fn(){
echo "input a num: ${1}"
}
循环
while []
do
done
for var in con1 con2 ...
do
done
用一个变量表示coni,则${var},或{1.. 100}
for (( ; ; ))
do
done
跟踪与调试
sh -nvx fn.sh