shell脚本攻略第一章总结
2015-12-20 20:43
656 查看
1、如果需要打印!,不能将其放入双引号中,有三种方式:
echo Hello world !
或者
echo 'hello world !'
或者
echo "Hello world \!"
2、printf格式化字符串,还可以指定字符串的宽度、左右对齐方式等。在默认情况下,printf并不像echo命令那样会自动添加换行符,我们必须在需要的时候手动添加。如:
printf “%-5d %-10s %-4.3f\n” 1 sarch 80.12345
解释:
%c、%d、%s和%f都是格式化字符串,-表示左对齐,默认是右对齐方式;.3指定保留2个小数位。
3、echo -n来忽略结尾的换行符。如果需要使用转义序列,则采用echo -e “包含转义序列的字符串”,如:
echo -e “1\t2\t3”
输出:1 2 3
4、彩色打印输出:
echo -e “\e[1;31m This is red text \e[0m”
文本对应的颜色码:重置=0、黑色=30、红色=31、绿色=32、黄色=33、蓝色=34、青色=36、洋红=35、白色=37.
背景对应的颜色码:重置=0、黑色=40、红色=41、绿色=42、黄色=43、蓝色=44、青色=46、洋红=45、白色=47.
5、获得字符串长度:length=$(#var)
6、基本的算数操作:
let 、(())、[]和expr
如;result=`expr 3 + 4`
bc是高级运算工具:echo ”4 * 0.56“ |bc
设定小数精度。
参数使用scale 如:echo "scale=2;3/8" |bc
进度转换
参数使用obase
平方根 sqrt()
平方^
7、标准输入输出
0-------标准输入
1-------标准输出 1>(>>) filename
2------标准错误输出 2>(>>)filename
1和2一起用: cmd >>filename 2>$1
tee既可以将数据重定向到文件,也可以提供一份重定向数据的副本作为后续命令的输入;
8、数组是shell脚本中非常重要的组成部分,它借助索引将多个独立的数据存储为一个集合。
shell中数组用小括号定义:array_var=(1 2 3 4 5 6)
打印数组中所有值:echo ${array_var[*]
或echo ${array_var[@]}
打印数组长度
echo ${#array_var[*]}
定义一个数组;declare -A array_var;
列出数组索引:echo ${!array_var[*]}
9、别名alias
$@-----表示所有脚本参数的内容;
$#-----表示所有脚本参数的个数;
10、获取终端信息
tput和stty是两款终端处理工具。
获取终端的行数和列数;
tput cols 列数
tput lines 行数
打印当前终端名:
tput longname
设置终端背景色
tput setb n) n可以在0-7之间取值
设置文本颜色
tput setf n) n可以在0-7之间取值
删除从当前光标位置到行尾的所有内容;
tput ed)----用在脚本中
11、date命令
date -d @秒数 可以换成时间
用格式串结合 + 作为date命令的参数,可以按照你的选择打印出对应的格式的日期
date ”+%d %B %Y“
设置日期和时间
date -s ”格式化的日期字符串“
在脚本中生成延时
#!/bin/bash
echo -n Count:
tput sc(存储光标位置)
count=0;
while true;
do
if [ $count -lt 40 ]
then
let count++
sleep 1
tput rc(恢复光标位置)
tput ed
echo -n $count
else
exit 0
fi
done
11、使用-x,启用shell脚本的调试功能
bash -x shell.sh
#!/bin/bash 改成#!/bin/bash -xv,不用任何其他选项就可以启用调试功能了。
12、定义函数
function fname()
{
statements;
}
或者
fname()
{
statements;
}
调用函数
fname;
参数传递
fname arg1 arg2;
递归函数
fork炸弹
:(){ :|:& };:
导出函数
export -f fname
$?----给出命令cmd 的返回值。成功为0,否则为非0
echo输出格式不变:
out=$(cat filename)
echo "$out"
13、read
read -s var 用无显得方式读取密码
read -p "Enter input:" var 显示提示信息,并赋值给变量var
在特定时间内读取输入
read -t 秒值 var
用特定的定界符作为输入行的结束;
read -d ":" var
14、IFS--内部字段分隔符,是存储定界符的环境变量,是当前shell环境变量使用的默认定界符字符串。
IFS=","---表示用逗号隔开
例子:
data=”a,b,c,d“
IFS=,
for item in $data
do
echo item: $item
done
IFS=$oldIFS
15、for循环
for var in list(可以是字符串,也可以列表)
do
commands
done
{1..50}--表示生成一个1——50的数字列表
16、if语句
if condition
then
commands
else if condition
then
commands
else
commands
fi
文件系统相关测试
[ -f $file-var ] 如果给定的变量包含正常的文件路径或文件名,则返回真。
[ -x $var ] 如果给定的变量包含的文件可执行,则返回真。
[ -d $var ]如果给定的变量包含的是目录,则返回真。
[ -e $var ] 如果给定的变量包含的文件存在,则返回真。
[ -c $var ] 如果给定的变量包含的是一个字符设备文件的路径,则返回真。
[ -b $var ] 如果给定的变量包含的是一个块设备文件的路径,则返回真。
[ -w $var ]可写,则返回真。
[ -r $var ]可读,则返回真
[ -L $var ] 是符号链接文件,则返回真。
[[ -z $var ]] :如果var包含的是空字符串,则为真;
[[ -n $var ]] :如果var包含的是非空字符串,则为真。
17、逻辑运算符: && || !
test可以用来执行条件检测
如:
if [ $var -eq 0 ] ;then echo "True";fi
--->
if test $var -eq 0 ;then echo "True";fi
echo Hello world !
或者
echo 'hello world !'
或者
echo "Hello world \!"
2、printf格式化字符串,还可以指定字符串的宽度、左右对齐方式等。在默认情况下,printf并不像echo命令那样会自动添加换行符,我们必须在需要的时候手动添加。如:
printf “%-5d %-10s %-4.3f\n” 1 sarch 80.12345
解释:
%c、%d、%s和%f都是格式化字符串,-表示左对齐,默认是右对齐方式;.3指定保留2个小数位。
3、echo -n来忽略结尾的换行符。如果需要使用转义序列,则采用echo -e “包含转义序列的字符串”,如:
echo -e “1\t2\t3”
输出:1 2 3
4、彩色打印输出:
echo -e “\e[1;31m This is red text \e[0m”
文本对应的颜色码:重置=0、黑色=30、红色=31、绿色=32、黄色=33、蓝色=34、青色=36、洋红=35、白色=37.
背景对应的颜色码:重置=0、黑色=40、红色=41、绿色=42、黄色=43、蓝色=44、青色=46、洋红=45、白色=47.
5、获得字符串长度:length=$(#var)
6、基本的算数操作:
let 、(())、[]和expr
如;result=`expr 3 + 4`
let "var+=1" 或 let var+=1 这种写法运算符间不能有空格
bc是高级运算工具:echo ”4 * 0.56“ |bc
设定小数精度。
参数使用scale 如:echo "scale=2;3/8" |bc
进度转换
参数使用obase
平方根 sqrt()
平方^
7、标准输入输出
0-------标准输入
1-------标准输出 1>(>>) filename
2------标准错误输出 2>(>>)filename
1和2一起用: cmd >>filename 2>$1
tee既可以将数据重定向到文件,也可以提供一份重定向数据的副本作为后续命令的输入;
8、数组是shell脚本中非常重要的组成部分,它借助索引将多个独立的数据存储为一个集合。
shell中数组用小括号定义:array_var=(1 2 3 4 5 6)
打印数组中所有值:echo ${array_var[*]
或echo ${array_var[@]}
打印数组长度
echo ${#array_var[*]}
定义一个数组;declare -A array_var;
列出数组索引:echo ${!array_var[*]}
9、别名alias
$@-----表示所有脚本参数的内容;
$#-----表示所有脚本参数的个数;
10、获取终端信息
tput和stty是两款终端处理工具。
获取终端的行数和列数;
tput cols 列数
tput lines 行数
打印当前终端名:
tput longname
设置终端背景色
tput setb n) n可以在0-7之间取值
设置文本颜色
tput setf n) n可以在0-7之间取值
删除从当前光标位置到行尾的所有内容;
tput ed)----用在脚本中
11、date命令
date -d @秒数 可以换成时间
用格式串结合 + 作为date命令的参数,可以按照你的选择打印出对应的格式的日期
date ”+%d %B %Y“
设置日期和时间
date -s ”格式化的日期字符串“
在脚本中生成延时
#!/bin/bash
echo -n Count:
tput sc(存储光标位置)
count=0;
while true;
do
if [ $count -lt 40 ]
then
let count++
sleep 1
tput rc(恢复光标位置)
tput ed
echo -n $count
else
exit 0
fi
done
11、使用-x,启用shell脚本的调试功能
bash -x shell.sh
#!/bin/bash 改成#!/bin/bash -xv,不用任何其他选项就可以启用调试功能了。
12、定义函数
function fname()
{
statements;
}
或者
fname()
{
statements;
}
调用函数
fname;
参数传递
fname arg1 arg2;
递归函数
fork炸弹
:(){ :|:& };:
导出函数
export -f fname
$?----给出命令cmd 的返回值。成功为0,否则为非0
echo输出格式不变:
out=$(cat filename)
echo "$out"
13、read
read -s var 用无显得方式读取密码
read -p "Enter input:" var 显示提示信息,并赋值给变量var
在特定时间内读取输入
read -t 秒值 var
用特定的定界符作为输入行的结束;
read -d ":" var
14、IFS--内部字段分隔符,是存储定界符的环境变量,是当前shell环境变量使用的默认定界符字符串。
IFS=","---表示用逗号隔开
例子:
data=”a,b,c,d“
IFS=,
for item in $data
do
echo item: $item
done
IFS=$oldIFS
15、for循环
for var in list(可以是字符串,也可以列表)
do
commands
done
{1..50}--表示生成一个1——50的数字列表
16、if语句
if condition
then
commands
else if condition
then
commands
else
commands
fi
文件系统相关测试
[ -f $file-var ] 如果给定的变量包含正常的文件路径或文件名,则返回真。
[ -x $var ] 如果给定的变量包含的文件可执行,则返回真。
[ -d $var ]如果给定的变量包含的是目录,则返回真。
[ -e $var ] 如果给定的变量包含的文件存在,则返回真。
[ -c $var ] 如果给定的变量包含的是一个字符设备文件的路径,则返回真。
[ -b $var ] 如果给定的变量包含的是一个块设备文件的路径,则返回真。
[ -w $var ]可写,则返回真。
[ -r $var ]可读,则返回真
[ -L $var ] 是符号链接文件,则返回真。
[[ -z $var ]] :如果var包含的是空字符串,则为真;
[[ -n $var ]] :如果var包含的是非空字符串,则为真。
17、逻辑运算符: && || !
test可以用来执行条件检测
如:
if [ $var -eq 0 ] ;then echo "True";fi
--->
if test $var -eq 0 ;then echo "True";fi
相关文章推荐
- bash(一)
- Powershell-基础:数组
- Powershell-Lync:统计当前环境下Lync用户总数
- Powershell-AD:查询并导出OU信息
- Powershell-Lync:以OU为单位启用Lync账户
- Shell插入排序(c语言版)
- Process in Shell
- OS X 黑科技 使用bash 播放mp3
- shell split 字符串 三种方式和效率
- BASH基础特性总结
- shell脚本错误:syntax error near unexpected token '$'\r''
- awk 输出值到多个变量
- shell 命令之 find 命令四
- lshell限制用户使用命令及其访问目录
- shell 命令之 find 命令三
- Bash命令行编辑
- 《Linux命令、编辑器与Shell编程》读书笔记6-磁盘和文件系统管理
- Powershell-Lync:如何查询用户使用的语音策略
- Powershell-Exchange:获取移动设备列表
- Shell 学习