引用自《linux shell脚本攻略》
### echo
不加引号和使用单引号都是原样输出,不加引号时分号被认为是命令结束,
单引号中无法输出单引号
echo -n #不换行输出
echo -e "1\t2" #使用转义字符时-e参数
echo -e "\e[31m hello" #使用红色文字显示hello,\e[0m重置回默认颜色,30开始文字颜色,40开始背景颜色
stty -echo #输入不显示在终端
stty echo #输入显示在终端
变量
a=55 #定义变量并赋值,不加空格,加空格为比较,a="hello boy"
c=$(date) #将命令赋值给c,使用$加括号
c=`命令` #同上
$( ) #命令,或者反引号(ESC下)
$[ ] #算术运算,或let
${ } #使用变量,${ 变量 }同$变量
${# } #获得变量长度 echo ${#5}
$? #命令执行状态,0成功,其他错误
$0 #返回当前shell
$1 $2... #第一个参数,第二个参数...
$@ #传入脚本的所有参数,同$*
$! #上一个后台进程的PID
输入重定向
> #标准输出(正确执行到结果)重定向(原本显示在终端等位置),覆盖到指定位置
>> #标准输出重定向,追加到指定位置
1> #等同于>,1可省略
2> #错误信息(出错信息)重定向,覆盖到指定位置
2>&1 #标准输出与错误输出均重定向到同一位置(全部执行结果)
>/dev/null #丢弃正确执行结果
>/dev/null 2>&1 #丢弃所有执行结果
命令 >a.txt 2>&1 #命令全部执行结果输入到a.txt,等于:命令 >& a.txt
date | tee a.txt | grep .. #执行date命令的输出保存在a.txt,并继续传递数据给后方的grep,作 #为grep的输入,tee只保存标准输出1,并且以覆盖的方式,追加用-a参数
输出重定向
命令 < a.txt #从a.txt读取数据作为命令的输入,等同于:命令 0
命令 <
数据 #EOF可以替换为其他单词
EOF
数组
普通数组
a = (1 2 3 4 5) #定义整型数组,每个元素空格隔开 echo ${a[0]}
a=(abc def "ni hao") #定义字符串数组
b [0] = "hi" #引号内仅能包含一个元素,括号可以多个元素
b [1] = "ha ha ha" #定义字符串数组
echo ${a[0]} #输出第0个元素
echo ${a[]} #显示数组中的所有值,也可以用@代替
echo ${#a[*]} #显示数组长度`
关联数组
declare -A fruits_value #定义一个关联数组,数组名fruits_value
fruits_value = ( [apple] = '5 yuan' [ orange] = '4 yuan' ) #索引,字符串,空格隔开
echo "apple is ${ fruits_value[apple] }" #输出索引apple的
echo ${!fruits_value[*]} #输出数组全部的元素,比普通数组多一个!号,在数组名之前
时间
date #显示当前日期
date +%a #星期
date +%y #年
date +%b #月
date +%d #日
date +%H #时
date +%M #分
date +%S #秒
date +%s #距标准时间的秒数
判断
if [ a -lt b] #lt小于,eq等于也可用=或==。gt大于,le小于等于,ge大于等于,ne不等于
then
echo a
else
echo a>b
fi
循环
for a in `seq 0 40 ` #a从零计数到40
do
echo -n $a
done
算数运算
let c=a+b 或 c=$[a+b] 或c=$((a+b)) 或 c='expr $a + $b' 或c=$(expr $a + $b) #只能用于整数
let a++ 或 let a+=1
字符转换
tr
终端
stty -echo #不将输入的内容显示在终端,用于读取密码
stty echo #取消以上
从网页获取壁纸
#!/bin/bash
###输入起始页和末页,空格隔开
read start end
for((i=$start;i<=$end;i++))
do
curl http://wallpaperswide.com/page/${i} |grep prevframe_show | cut -d"/" -f5 |cut -d. -f1 |while read wall_url
do
sudo axel -c -a -o /usr/share/backgrounds http://wallpaperswide.com/download/$wall_url-wallpaper-1366x768.jpg
done
done