#!/bin/sh:指定执行脚步的shell
#:注释行
1.设置变量:
s1="content"
s2=$s1
s3="${s1}_test"
s4=`date`
2.特殊变量
$0:这个程序的文件名
$n:第n个参数,n=1-9
$*:这个程序的所有参数
$#:这个程序的参数个数
$$:这个程序的PID
$?:执行上一个命令的返回值,0:success 非0:error
还有一个特殊用法,打印长度:
var=1234567890
echo ${#var}
10
3.从键盘读入数据
read 变量:此时会等待用户键入变量值
read 变量1 变量2 变量3:可以设置多个
4.算术运算
expr 3 + 5
expr $var - 5
expr 100 / 5
expr 2 \* 4 :*号要进行转意
expr `expr 5 + 7` / 3
var1 = `expr 3 + 5`
expr \( 3 + 5 \) / 2 :括号要转意
bash中,变量自增的五种方法:
i=0
1. i=`expr $i + 1`
2. let i+=1
3. ((i++))
4. i=$[$i+1]
5. i=$(( $i + 1 ))
5.测试语句test == [ ]
1)字符串
str1 = str2 :测试字符串是否相等
str1 != str2 :测试字符串是否不等
-z str :测试字符串是否为空
-n str :测试字符串是否不为空
2)整数
int1 -eq int2 :测试整数是否相等
int1 -ge int2 :测试是否大于等于
int1 -gt int2 :测试是否大于
int1 -le int2 :测试是否小于等于
int1 -lt int2 :测试是否小于
int1 -ne int2 :测试是否不相等
3)文件
-d file :是否为目录
-f file :是否为常规文件
-x file :是否可执行
-r file :是否可读
-w file :是否可写
-a file :是否存在
-s file :文件大小是否非0
6.流程控制
exit 0 :正常退出
exit 1 :非0,非正常退出
-a :逻辑与,两个条件同时成立,结果为真
-o :逻辑或,两个条件只要有一个成立,结果为真
7.if条件判断
if [ -d $file ];then
…………
fi
if [ -d $file ];then
…………
else
…………
fi
if [ -d $file ];then
…………
elif [ -f $file ];then
…………
else
…………
fi
if [ -d $file -o -f $file ];then
…………
fi
8.for循环
for 变量 in 列表
do
……
done
例子:
for day in Sun Mon Tue Wed Thu Fri Sat
do
echo "The day is : $day"
done
for line in `cat file`
do
echo $line
done
9.select选项列表
select把关键字中的每一项做成类似表单,以交互执行do和done之间的命令
select 变量 in 关键字
do
command1
command2
……
done
例子:select.sh
select var in "Linux" "UNIX" "Windows" "Other"
do
echo "You have selected $var"
break
done
显示结果:
# sh select.sh
1) Linux
2) UNIX
3) Windows
4) Other
#? 1
You have selected Linux
10.case条件匹配
case 变量 in
字符串1)命令列表
;;
字符串2)命令列表
;;
*) 命令列表 :其它情况
;;
esac
例子:
var="start"
case "$var" in
start)
echo "start"
;;
reload)
echo "reload"
;;
stop)
echo "stop"
;;
status)
echo "status"
;;
*)
echo "$0: Usage: $0 {start|status|stop|reload}"
exit 1
;;
esac
11.while循环
int1=0
while [ $int1 -le 100 ]
do
echo $int1
int1=`expr $int1 + 1`
done
12.until循环:类似while,不同点时条件判断为假时才执行
int1=100
until [ $int1 -eq 0 ]
do
echo $int1
int1=`expr $int1 - 1`
done
13.跳出循环
break:跳出整个循环
continue:跳过本次循环,进行下次循环
14.shift指令
每执行一次,参数序列顺序左移一个位置,$#的值减1,移出去的参数不在可用
例子:参数为 1 2 3 4 5
#!/bin/sh
if [ $# -le 0 ]
then
echo "Not enough parameters"
exit 0
fi
sum=0
while [ $# -gt 0 ]
do
sum=`expr $sum + $1`
shift #因为每次执行shift,所以上面的$1永远都是下一个参数
done
echo $sum
15.函数
函数定义:
函数名 (变量1,变量2,……)
{
命令序列
}
变量均为全局变量,shell没有局部变量,函数的变量参数在方法体内引用时$1,$2,……
例子:
stop() {
echo -n $"Stopping $prog: "
killall nginx
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f $nginx_pid /var/lock/subsys/$prog
}
函数调用:
函数名
case "$1" in
stop)
stop
;;
*)
echo $"Usage: $0 {start|stop|reconfigure|status}"
exit 1
esac
16.脚步调试
sh -x 脚步:执行脚步,并显示全部过程
sh -n 脚步:不执行脚步,只检查语法错误
17.dos2unix
如果在windows环境下编写的脚步,上传到linux后需要先执行dos2unix进行编码转换,否则不能正确执行
dos2unix *.sh
18.cut 字符串切分
-d : 指定分隔符
-f:取分割后的第几项,从1开始
例如:
newlist文件格式:注意(windows上传到linux时,需要先对文件执行dos2unix)
redis简介及使用pdf(影印版).pdf#/usr/local/ea97efab-264c-4e04-a6b8-5740b752d809
目标是将『#』后面的文件路径拷贝到指定的路径下并命名为『#』前面的文件名
for line in `cat newlist` do #echo $line filename=`echo "$line" | cut -d '#' -f 1` filepath=`echo "$line" | cut -d '#' -f 2` echo $filename echo $filepath echo "cp ${filepath} ./filedir/${filename}" cp $filepath "./filedir/${filename}" done
相关推荐
内容包括Linux常用命令、文件操作、环境安装与配置、shell语法、权限管理、进程管理、vim、git、ssh、tmux、docker、thrift、多线程与多进程、各种编程语言的编译与执行等内容。
程序员必会的Linux命令
计算机基础知识学习笔记-程序员必知的硬核知识大全
黑马程序员linux服务器开发网络编程配套文档,很好的参考资料
linux常用命令,如基础命令,用户管理,进程管理,软件包管理,shell编程,等等
简历模板-程序员-精选简历模板-程序员-精选简历模板-程序员-精选简历模板-程序员-精选简历模板-程序员-精选简历模板-程序员-精选简历模板-程序员-精选简历模板-程序员-精选简历模板-程序员-精选简历模板-程序员-精选...
深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一。 Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K ...
本书由浅入深、循序渐进地详细讲解了LinuxShell编程的基本知识。这些基本知识包括Shell编程的基本知识、文本处理的工具和方法、正则表达式、Linux系统知识等。 本书旨在通过理清Linux Shell编程的脉络,从基本概念...
简历模板-程序员-通用-精选简历模板-程序员-通用-精选简历模板-程序员-通用-精选简历模板-程序员-通用-精选简历模板-程序员-通用-精选简历模板-程序员-通用-精选简历模板-程序员-通用-精选简历模板-程序员-通用-精选...
linux常用命令全集
Linux运维-高级程序员必备技能Shell编程资料.zip
实用经典算法,每一个程序员都必知必会的算法
本书通俗易懂,语言风趣,内容丰富,是一本面向Linux编程初学者的书。...本书是一些没有学习过计算机编程技术的初学者或还没来得及学习Linux编程的程序员的良师益友,对迅速掌握和提高Linux编程技术定会有很大帮助!
JAVA程序员之路-----看专业程序员的成长之路
Linux命令全集,收录的程序员常用的linux命令,不过这个文档我还没用过。是菜鸟家族的人推荐的我就迫不及待的分享给大家了
linux高级命令教程及代码Python-linux高级命令教程及代码Python-linux高级命令教程及代码Python-linux高级命令教程及代码Python-linux高级命令教程及代码Python-linux高级命令教程及代码Python-linux高级命令教程及...
Linux常用命令,对开始学习Linux的学习者是很有用的。 php C C++程序员 多学习学习。
screen-4.0-程序员运维必备-后台运行应用-linux-64-32位.rar 1. 资源内容:后台运行应用screen 可方便管理后台应用,告别 -d ,告别nohup 2. 使用目标:运维,后台运行应用,linux 后台运行 3. 应用场景:部署 和 ...
强烈推荐! linux程序员 权威参考书!
C++程序员惯用法--高级程序员常用方法和技巧