shell学习
set -x 进入调试模式,会把每一个命令实际执行的命令打印出来,也就是会把一些参数扩展后的样子打印出来.
set +x 退出调试模式
自定义变量:
x=7,y=8
echo `expr $x + $y` #会输出15 如果发现一些奇怪的输出,可能是由于空格导致的,所以试着加上或去掉空格
message="hello world"
echo $message 或者 echo ${message}
echo "$message"999
echo ${messsage}999
unset message #删除一个变量
shell的=左右不可以有空格,它会认为这是一个命令
set 这个命令会把所有的变量还有函数等都打出来
env会把系统变量打出来
pstree 会打印线程树
echo ${#message} 打印出字符串的长度
echo ${message:2} 会打印llo world
echo ${message:2:3} 会打印llo
echo ${message#h*l} 会打印lo world
echo ${message##h*l} 会打印o world 上面俩个的差别是#是最短匹配, ##是最长匹配 然后把匹配到的去掉
echo ${message/l/L} 会打印heLlo world
echo ${message//l/L} 会打印heLLo world
环境变量和自定义变量的区别是,环境变量是可以向子shell传递的,自定义变量不能传递.
使用export声明环境变量 在子系统中把父系统的环境变量删掉,在父系统中这个环境变量任然在.
$1-9,传入的参数,${10}以后需要加括号,$*,$@可以拿到所有的参数,$#可以拿到参数的个数,$?返回上条命令执行是否成功
echo $$ 打印出当前进程的pid
echo $! 打印出后台运行程序的pid
&& || 也可以当做条件语句来使用
declare -给变量声明类型, +给变量声明类型, -a声明为数组, -i声明为整数, -x声明为环境变量, -r声明为只读变量, -p显示被声明的类型
declare -i y=10
declare -i z=19
declare -i x=$y+$z
mesgs[0]="h"; mesgs[1]="q"; 直接这样也可以声明为数组 echo${msgs[1]} 这样对打印第二个元素 直接 echo mesgs会打印第一个元素 echo ${mesgs[*]}会把所有的元素都打印出来 还可以直接 msg=(0 1); 来声明一个数组
${#mesgs[@]} 或者 ${#mesgs[*]} 来打印数组的长度
num1=1 num2=2 num3=$(($num1+$num2)) echo $num3 会打印出来3 还有上面那种expr的方式来进行数值运算 还可以 let num3=num1+num2, 和前面的效果一样
str=abcdefg expr length $str 会打出str的长度, expr index $str "a" 会打出a的index , expr substr "$str" 1 3 会打出abc
条件语句:
if [ cond ] ; then
...
fi
if [ cond ]
then
...
if
if [ cond ]
then
..
else
..
fi
if [ cond ]
then
..
elif[ cond ]
then
..
fi
上面的cond还可以这样: cond1 -a cond2 逻辑与
cond1 -o cond2 逻辑或
!cond 逻辑非
文件判断: -b 是否为块设备文件
-c 是否为字符设备文件
-d 是否为目录
-e 是否存在
-f 是否是普通文件
-L 是否为连接文件
-p 是否为管道文件
-s 是否为空
-S 是否为套接字文件
判断文件权限: -r 是否可读
-w 是否可写
-x 是否可执行
-u 是否suid权限
-g 是否有sgid权限
-k 是否有sbid权限
file1 -nt file2 #file1修改时间是否比file2新
file1 -ot file2 #file2修改时间是否比file2旧
判断数字: -eq 判断是否相等
-ne 判断是否不相等
-gt 判断是否大于
-lt 判断是否小于
-ge 判断是否大于等于
-le 判断是否小于等于
判断字符串: -z 判断字符是否为空
-n 判断字符是否为非空
== 判断字符串是否相等
!= 判断字符串是否不相等
case 语句的语法:
case $var in
"val1") <---------这里的condition必须是常量
commands
;;
"val2")
commands
;;
*)
commands
;;
esac
for循环:
for var in var1 var2 var3...
do
...
done
s=0
for((i=1;i<=100;i++))
do
s=$(($s+$i))
done
echo "sum is:$s"
$*和$@的区别:
不加引号的时候,这俩个是一样的.如果加上引号: "$*" "$@" 后,"$*"会把$*里的元素当做一个整体,而"$@"不会
while [cond]
do
...
done
i=0
while [ i -le 100 ]
do
i=$(($i+1))
done
until [ i -ge 100 ]
do
i=$(($i+1))
done
接受键盘收入:
read 命令:
-p 提示信息
-t 等待秒数
-n 输入的字符数
-s 隐藏输入
read -p "输入你的name" -t 30 name
echo $name
read -p "输入密码" -s passward
echo -e '\n'
echo $passward
shell函数:
#!bin/sh
sum 1 2; <---------这里调用不到这个函数,因为还没扫描到这个函数
function sum()
{
echo $(($1+$2))
return 0;
}
sum 1 3; <--------这里可以调用到这个函数
shell学习的更多相关文章
- shell学习总结之自定义函数
shell学习总结之自定义函数 Myfun (){ echo -n "now i is $i " ! [ "$i" ] && exit ; ec ...
- SHELL学习笔记----IF条件判断,判断条件
SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外. if list then do something here ...
- shell学习笔记
shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...
- shell学习指南-阅读笔记
shell学习指南真不是刚开始学习shell应该看得书,虽然其中讲了简单的linux命令,shell语法等,但是每章也有些深入和生僻地方,我想如果我刚学shell看到这样的地方一定会头疼的要死.或许也 ...
- 【转】shell学习笔记(一)——学习目的性、特殊字符、运算符等
1 学习shell的目的性 写之前我们先来搞清楚为什么要学shell,学习要有目的性 shell简单.灵活.高效,特别适合处理一些系统管理方面的小问题 shell可以实现自动化管理,让系统管理员的工作 ...
- Shell学习之结合正则表达式与通配符的使用(五)
Shell学习之结合正则表达式与通配符的使用 目录 通配符 正则表达式与通配符 通配符 通配符的使用 正则表达式 正则表达式 正则表达式的使用 通配符 正则表达式与通配符 正则表达式用来在文件中匹配符 ...
- Shell学习之条件测试(四)
Shell学习之条件测试 目录 逻辑测试 文件测试 数值比较 字符串比较 逻辑测试 格式: [ 表达式 ] 操作符 [ 表达式2 ] …… 命令1 操作符 命令2 …… 常用的操作符 ( 注意:-a和 ...
- Shell学习之环境变量配置文件(三)
Shell学习之环境变量配置文件 目录 环境变量配置文件简介 环境变量配置文件作用 其他配置文件和登录信息 环境变量配置文件简介 环境变量配置文件简介 环境变量配置文件中主要是定义对系统操作环境生效的 ...
- Shell学习之Bash变量详解(二)
Shell学习之Bash变量详解 目录 Bash变量 Bash变量注意点 用户自定义变量 环境变量 位置参数变量 预定义变量 Bash变量 用户自定义变量:在Bash中由用户定义的变量. 环境变量:这 ...
- Shell学习之Shell特性(一)
Shell学习之Shell特性 目录 命令和文件自动补齐功能 命令历史记忆功能 history.上下键.!number.!string.!$.!! 别名功能 alias.unalias cp.~use ...
随机推荐
- 重复数据分析的三个常用语法distinct, group by, partition by
由于数据经常会出现重复现象,数据去重是数据分析中常用操作之一,而distinct,group by, partition by三者都可以实现去重功能,实践中需要根据不同的场景需求来选取相应的语法. d ...
- RIDE安装遇到的问题及解决方法
1.按照虫师的方法,下载的wxpython3.0 ,启动robotframework-ride,无效,因为版本不一致,所以我又根据终端提示的网址:http://sourceforge.net/proj ...
- iconv将文件编码从gb2312 转换为utf-8
iconv命令用于转换指定文件的编码,默认输出到标准输出设备,亦可指定输出文件. 用法: iconv [选项...] [文件...] 有如下选项可用: 输入/输出格式规范:-f, --from-cod ...
- curl模拟登录新浪微博
这几天要做个获取新浪微博@我的信息, 又不用第三方登录,所以只能通过模拟登录来获取信息,研究的一下发现直接模拟登录微博比较困难,验证的算法比较复杂,于是绕道通过登录新浪通行证后来获取cookie 来 ...
- EXTJS4自学手册——EXT基本方法、属性(mixins多继承、statics、require)
1.mixins 说明:类似于面向对象中的多继承 <script type="text/javascript"> Ext.onReady(function () {// ...
- 收缩SQL Server 数据库的几种方法
方法一: Use 数据库名 Select NAME,size From sys.database_files ALTER DATABASE 数据库名 SET RECOVERY SIMPLE WITH ...
- Phpstorm 设置取消自动保存
个人通过使用,发现PhpStorm的确是 编辑PHP 的神器,提供用户效率,提供智能代码补全,快速导航以及即时错误检查. 不过,让我用起来不爽的是,它会自动保存,还不能使用快捷键Ctr+Z来撤销,也就 ...
- 移动APP开发使用什么样的原型设计工具比较合适?
原型设计工具有Axure,Balsamiq Mockups,JustinMind,iClap原型工具,等其他原型工具.其中JustinMind比较适合APP开发使用. JustinMind可以输出Ht ...
- 学习Java,还需要学好哪些知识
很多人认为学好一门程序语言就需要学好逻辑,其实这对于很多人而言是对的,但是真的对于需要写程序的学员来说,只有逻辑好其实是不够的,如果你能具备以下几项能够为你在程序编译中大大提高工作效率.现在昆明jav ...
- [修改后]html+css 做成一个可浏览的表格
现在表格内容需要显示的要求如下: 1, 表格很大,界面放不小,需要放到div中. 2, 在div中可以用scroll滑动查看. 3, td中的内容保持在一行中. 4, 可以点击tr,然后可以选中并了解 ...