弱引用
将字符串放置在双引号中,保留字符串中所有字符的文字值,$、`、\和!字符除外。换言之,变量
扩展和命令扩展在双引号内仍起作用。
echo “can I have a $FRUIT”
echo “The current time is $(date +%r).”
强引用
将字符串放置在单引号中,保留字符串中所有字符的文字值,同时禁用所有扩展:
echo “Make $$$ Fast”
rm 'untitled folder'
转义
非引用的\是转义字符。它保留了下一个字符的文字值。(例如,\$PATH是确切的字符串$PATH,而
不是PATH变量的内容。)
命令替换
命令替换在子shell中执行指定命令并用命令输出替换脚本中的命令替换。
语法:
$(shell command)
示例:
touch datafile.$(id -un)
TODAY=$(date +%Y-%m-%d)
算术运算符
算术运算符指的是可以在程序中实现加、减、乘、除等数学运算的运算符。
operator meaning
<VARIABLE>++ 增量后
<VARIABLE>-- 减量后
- 减法
+ 加法
** 幂运算
* 乘法
/ 除法
% 余数
+= 加等
-= 减等
Shell计算命令:
用$[]表示数学运算。
# echo $[1+2]
# a=1; echo $[$[$a+1]*2]
用expr表示数学运算。
# echo `expr 1 + 2`用let指示数学运算。
# let A=1+2# echo $A
用(())表示数学运算。bash内建功能,效率高。
#!/bin/bashfor ((i=1;i<10;i++))
do
((j+=i))
done
echo $j ###j为1到9相加的和
数据库备份脚本:
#!/bin/bash
for DB in $(mysql -uroot -pwestos -e "show databases;" -E -N | grep -v '^*' | grep -v 'schema$')
do ##过滤要备份的数据库
echo "Backup $DB"
mysqldump -uroot -pwestos $DB > /dbbackup/$DB.dump ##备份数据库到/dbbackup目录
done
echo "OK"
for DBDUMP in /dbbackup/* ##过滤/dbbackup中的库名
do
SIZE=$(stat --printf "%s\n" $DBDUMP) ##统计备份文件大小
echo "$DBDUMP $SIZE"
done