1、shell脚本一般以#!开头。
2、printf: printf “%-5s %-10s %-4s\n” No Name Mark。%-5s指明一个格式为左对齐且宽度为5的字符串替代(-表示左对齐),如果不用-指定对齐方式,字符串则采用右对齐。宽度指定了保留给某个变量的字符数。对Name而言,保留宽度是10。
3、获得字符串的长度:var=1213434545345 length=$(#var) 可以获得字符串长度,存放在length中。 获得使用哪种shell:echo $SHELL 或者 echo $0。 echo $UID 为0则为超级用户。
4、shell中数学运算:可以利用let、(())和[ ] 执行基本算数操作,高级操作使用 expr和bc。 n1=10 n2=12 自加:let n1++ result=$[ n1+n2 ] retult = `expr 3+4` result=$(expr $n1 +3)
5、文本描述符。 0 —— stdin (标准输入)
1 —— stdout (标准输出)
2 —— stderr (标准错误)
使用 echo $? 可以打印退出状态。
错误重定向: ls + 2> out.txt 将错误信息输出到out.txt中。
6、数组定义: array_var=(1 2 3 4 5 ) 或者 array_var[0] = "test1"。 echo ${array_var[*]} 输出所有的值,echo ${array_var[2]} 输出第二个 值。
7、获取终端信息。 获取终端的行数和列数: tput cols
tput lines
光标移动懂啊方位(100,100)处: tput cup 100 100
获得时间:date,日期格式如下:
$ date "+%d %B %Y"
09 February 2015
8、脚本调试。
使用选项-x,启动跟踪调试shell脚本:
$ bash -x script.sh
-x标志能打印出所有执行的每一行命令及当前状态。输出到stdout。
可以在脚本中启用或禁止调试打印。
set -x :在执行时显示参数和命令
set +x:禁止调试
set -v:当前命令进行读取时显示输入
set +v:禁止打印输入。
9、函数和参数。
定义函数:
function fname()
{
statements;
}
或者
fname()
{
statements;
}
只要使用函数名就可以调用某个函数:
$ fname ;
fname arg1 arg2 ;传递参数
fname()
{
echo $1, $2; #访问参数1和参数2
echo “[email protected]” ; 以列表形式一次性打印所有参数 类似有“$*”
}
$1是第一个参数
$2是第二个参数
$n是第n个参数
"[email protected]" 被扩展成“$1” "$2" "$3"等。
10、利用子shell生成一个独立的进程
子shell本身就是独立进程。可以使用()操作符来定义一个子shell:
pwd;
(cd /bin;ls)
pwd;
子shell中执行时,不会对当前shell有任何影响,所有改变仅限于子shell内。如上例子中两个pwd命令输入内容一致。
11、read 读取键盘命令。
读取n个字符并存入变量var: read -n 2 var
不回显的方式读取密码: read -s var
显示提示信息: read -p “Enter input:” var
两秒内键入的字符串读入var:read -t 2 var
12、-gt :大于; -lt :小于; -ge:大于或等于; -le :小于或等于; -a:逻辑与 ; -o : 逻辑或。 -ne 不等于, -eq 等于。
[ $var1 -ne 0 -a $var2 -gt 2 ] var1不等于0,并且var2大于2。
系统文件相关测试:
[ -f $file_var ] ;如果给定的变量包含正常文件路径或文件名,返回真
[ -x $var ] :如果变量包含的文件可执行,为真
[ -d $var ]: 包含目录为真。
[ -e $var ]:包含的文件存在,为真
[ -c $var ]:包含字符设备,为真
[ -b $var ]:块设备,为真
[ -w $var ]:可写,为真 ; -r可读为真; -L 符号连接,为真。
字符串比较:
[[ $str1 = $str2 ]] :相等返回真。 != 不等返回真。 > 大于返回真 , < 小于返回真。
[[ -z $str1 ]] :空字符串返回真 , -n 非空返回真。