shell命令
#! /bin/sh
# 第一行指定解释器
# -e 启用转义 \c 不打印最后的换行符
echo -e "Enter num: \c"
#重定向
who > test.log # 将who的打印输出到test.log
tr -d s < test.log # 输入改为test.log 删除文本中的s
ls >> test.log # 将ls的输出写到test.log末尾
# 管道
ls /sys/bus | sort > bus.log # 将前面的输出作为后面的输入
# /dev/null /dev/zero
# 空设备通常被用于丢弃不需要的输出流,或作为用于输入流的空文件
# 用它提供的字符流来覆盖信息,另一个常见用法是产生一个特定大小的空白文件
x=3+4
let y=510
declare -i z=54/3
echo $x $y $z
# 3+4 510 18
declare -p x y z
# declare -- x="3+4"
# declare -- y="510"
# declare -i z="18"
# 把本地变量导出为环境变量
export VARNAME=value
# 删除已定义的环境变量或本地变量
unset VARNAME
# Wildcard
# * 匹配0个或多个任意字符
# ? 匹配一个任意字符
# [若干字符] 匹配方括号中任意一个字符的一次出现
ls /dev/ttyS*
# 命令代换 $() ``
DATE=$(date)
DATE=`date`
# 算术代换
# $(())中只能用+-*/和()运算符,并且只能做整数运算。
# $[base#n],其中base表示进制,n按照base进制解释,后面再有运算数,按十进制解释
echo $[16#10+11]
# 单引号用于保持引号内所有字符的字面值
# 双引号防止通配符扩展,但允许变量扩展
VAR=200
echo $VAR
echo '$VAR'
echo "$VAR"
# 200 $VAR 200
# test 退出状态
test "$str1" = "$str2"
[ "$str1" = "$str2" ]
# -f(file) -d(directory) -z(zero) -n(non-zero)
# -eq(等于)-ne(不等于)-lt(小于)-le(小于等于)-gt(大于)-ge(大于等于)
# “:”是一个特殊的命令,称为空命令,该命令不做任何事,但Exit Status总是真
if :; then echo "always true"; fi
case "$1" in
start)
...
;;
stop)
...
;;
reload | force-reload)
...
;;
restart)
...
*)
;;
esac
# {0..10}在/bin/bash才有用
for i in $(seq 0 10)
do
echo $i
done
#! /bin/sh
echo "Enter password:"
read TRY
while [ "$TRY" != "admin" ]; do
echo "Sorry, try again"
read TRY
done
# $0 相当于C语言main函数的argv[0]
# $1、$2... 这些称为位置参数(Positional Parameter),相当于C语言main函数的argv[1]、argv[2]...
# $# 相当于C语言main函数的argc - 1,注意这里的#后面不表示注释
# $@ 表示参数列表"$1" "$2" ...,例如可以用在for循环中的in后面。
# $* 表示参数列表"$1" "$2" ...,同上
# $? 上一条命令的Exit Status
# $$ 当前进程号