例子
使用日期命名文件
#!/bin/bash
# 创建三个文件,名称由"用户输入+日期"构成
echo -e "我将使用'touch'命令创建3个文件"
read -p "请输入一个文件名:" fileuser
filename=${fileuser:-"filename"}
date1=$(date --date='2 days ago' +%Y%m%d)
date2=$(date --date='1 days ago' +%Y%m%d)
date3=$(date +%Y%m%d)
file1=${filename}${date1}
file2=${filename}${date2}
file3=${filename}${date3}
touch "${file1}"
touch "${file2}"
touch "${file3}"
-
变量赋值:
- 等号左右不能有空格
- 如果值中有空格,要用引号把值引起来
-
输出变量的值:
-
echo $PATH
或echo ${PATH}
-
-
"-"与":-"
echo ${name-"eli"}# 当name为空时,输出"eli",否则输出变量name的值
echo ${name:-"eli"}# 当name为空或空字符串时,输出"eli",否则输出变量name的值
-
获取命令的值,可以这样`pwd`,也可以这样
$(pwd)
- 所以
$(date --date='2 days ago' +%Y%m%d)
表示获取date命令的值
- 所以
-
date命令
date +%Y/%m/%d_%H:%M:%S # 输出时间
date -d "+1 second" +%Y/%m/%d_%H:%M:%S # 输出下一秒
date -d "+1 day" +%Y/%m/%d_%H:%M:%S # 输出明天的时间
date -d "+2 day" +%Y/%m/%d_%H:%M:%S # 输出后天时间
date -d "-1 day" +%Y/%m/%d_%H:%M:%S # 输出昨天时间
date -d "2 day ago" +%Y/%m/%d_%H:%M:%S # 输出前天时间
date --date="3 day ago" +%Y/%m/%d_%H:%M:%S # 输出大前天时间
date -s 20120523 # 设置时间
date -s 01:01:01 # 设置时间
date -s "2012-05-23 01:01:01" # 设置时间
date -s "20120523 01:01:01" # 设置时间
简单的加减乘除
#!/bin/bash
# 输入两个整数,输出乘积。
echo -e "输入两个整数,\n"
read -p "第一个数:" firstnum
read -p "第二个数:" secondnum
total=$((${firstnum}*${secondnum}))
echo -e "\n${firstnum} x ${secondnum} = ${total}"
- var=$((运算内容)) 运算符号有"+ - * / %"等等
- 如
echo $((13 % 3))
结果为1
- 如
- 还可以通过bc这个指令来做运算,
- 如
echo "1.3*3.2" | bc
结果为4.1 - 如
echo "1.3*3.200" | bc
结果为4.160
- 如
通过bc计算pi
#!/bin/bash
# 计算pi的值
read -p "请输入pi的小数位数:" checking
num=${checking:-"10"}
echo "请耐心等待..."
time echo "scale = ${num}; 4*a(1)" | bc -lq
-
scale
的值表示小数位数 -
4*a(1)
是bc中计算pi的函数
不同执行方式的差异(source, sh script, ./script)
sh script
和./script
这两种方式会使用一个新的bash环境来执行脚本内的指令。
而source
会在当前bash环境下执行脚本。
这也是为什么,在使一些配置文件生效时,用的是source
如source ~/.bashrc
source /etc/profile
网友评论