SHELL脚本的常规命令
**shell脚本的执行方式:
方法一:首先赋予x权限,再输入相对路径或绝对路径,./testdot.sh或/root/shell/testdot.sh
方法二:sh testdot.sh(会新开一个bash,不同bash中的变量无法共享)
方法三:. ./testdot.sh(不会新开bash)
**单引号与双引号:单引号屏蔽一切特殊符号,双引号可以屏蔽空格但无法屏蔽引用变量
**获取紫铜所有的变量:set
**获取内核进程的结构树:pstree
**获取用户的主目录:echo $HOME
**获取当前脚本运行所在目录:echo $PWD
**获取当前脚本所用的解释器:echo $SHELL
**获取当前脚本的用户:echo $USER
**设置全局环境变量:export 变量名
**解除变量:unset 变量名
**设置静态变量:readonly 变量名=1(一般不用)
**查询某条命令的用法:某命令 --help
**变量赋值给另一变量:x=`ls`(或者x=$(ls))
**获取上一个命令退出的状态或函数的返回值:$?
**获取当前进程的编号:$$
**获取当前脚本的名称:$0
**获取输入的第n个参数:$n(n>=1)
**获取脚本参数的个数常用于循环:$#
**获取脚本的所有参数:$*($@) PS:$*加了引号会变,而$@加了引号不会变还是一个个的变量输出
**使用脚本写出(2+3)*4:第一种写法:expr $(((2+3)*4)) 或者 echo $(((2+3)*4))
第二种写法:S=`expr 2 + 3` expr $S \* 4
**在SHELL语言中:export a=1;表示定义的变量,会对自己所在的SHELL进程机器子进程生效
a=1;表示定义的变量,只对自己所在的SHELL进程生效
在s.sh中定义的变量,在当前登陆的SHELL进程中
** for 循环的两种写法:
for p in $*
do
echo $p
done
---------------
for ((i = 0; i <= n; i++))
do
echo "第 $i 次"
done
** while 循环的两种写法:
while expression
do
command
done
---------------
i=1
while ((i<=3))
do
echo $i
let i++
done
** case 语句的写法:
case $1 in
start)
echo "starting"
;;
stop)
echo "stoping"
;;
*)
echo "Usage: {start|stop} “
esac
** read 的用法:read -p "提示语句" Var(read -p "please input your name: " NAME echo $NAME)
read -n "字符个数" Var
read -t "等待时间" Var
** if 语句的用法:
#!/bin/bash
read -p "please input your name:" NAME
#printf '%s\n' $NAME
if [ $NAME = root ]
then
echo "hello ${NAME}, welcome !"
elif [ $NAME = itcast ]
then
echo "hello ${NAME}, welcome !"
else
echo "get out here !"
fi
PS:注意[ ]内部前后加空格,[ ]返回false-1。
**判断语句:
[ condition ] && echo OK || echo NOTOK,条件满足,执行OK,不满足执行NOTOK。(A?B:C)
**常用的判断条件:
= 字符串比较
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于
-r 有读的权限
-w 有写的权限
-x 有执行的权限
-f 文件存在并且是一个常规的文件
-s 文件存在且不为空
-d 文件存在并是一个目录
-b文件存在并且是一个块设备
-L 文件存在并且是一个链接
**SHELL自定义函数:
语法:
function funname()
{
action;
[return int;]
}
For example:function start() / function start / start()
小例子:
----------------------------
#!/bin/bash
fSum()
{
echo $1,$2
return $(($1+$2))
}
total=$?
echo "第一次点调用后返回的结果: "$total
fSum 5 7
total=$?
echo $total,$?
PS:妈呀,由于本人愚钝,花了1个小时才找到了代码的问题所在,原来是直接粘过去的代码在SHELL语言
里不能加Tab键呐!!!之前怎么跑都不好使,只是显示echo: command not found报错,网上查
了N种可能也都不行,于是一行行的找毛病,终于发现了问题所在。之后对其进行了一番试验,为
啥空格加在echo之前好使,而Tab键加在之前就不好使了呢?为啥直接在SHELL里编辑加了Tab键却
好使呢?哎,还是我太嫩了,一点点的积累经验吧。
-------------------------
#!/bin/bash
demoFunction(){
echo "This is my demo shell function!"
}
echo "Function is begining..."
demoFunction
echo "Function is ending!"
---------------------------
#!/bin/bash
funSum(){
echo "Sum of two numbers..."
echo -n "Input a number: "
read Num1
echo -n "Input another number: "
read Num2
echo "The two numbers are $Num1 and $Num2 !"
return $(($Num1+$Num2))
}
funSum
echo "The sum of two numbers is $? !"
**脚本调试:
第一种:sh -vx test.sh
第二种:set -x (在脚本中增加)
SHELL脚本的常规命令的更多相关文章
- shell脚本一条命令直接发送http请求(xjl456852原创)
我们知道nc命令是一个网络工具.可以连接tcp/udp.也能模拟发送http请求. 现在介绍通过shell脚本,一条命令直接发送http请求. 命令如下,可以对下面的地址等信息自行修改: #!/bin ...
- shell脚本中sqlite3命令查询数据库失败返回空,并将错误信息打印到标准错误输出
shell脚本中sqlite3命令查询数据库失败返回空,并将错误信息打印到标准错误输出 如: #/bin/sh local ret='sqlite3 test.db "select test ...
- centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课
centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件.目录属性 shell数组简单用法 $( ) 和$ ...
- (转)shell脚本之seq命令
shell脚本之seq命令 原文:http://blog.csdn.net/paoxiaohui/article/details/52830595 seq 用于生成从一个数到另一个数之间的所有整数. ...
- shell脚本批量执行命令----必需判断上一步执行结果--没有捷径
# 注意:shell脚本批量执行命令,不能只写一个函数,然后把所有命令复制进去,之前试过这样是不行的.必须要有一个判断命令执行成功与否的语句 # 简单的命令可以不加结果判断符号,但是遇到解压包.sed ...
- shell 脚本之获取命令输出字符串以及函数参数传递
在ubuntu 14.04之后,所有的U盘挂载也分用户之分,最近很多操作也和U盘有关,所以就研究了一上午shell脚本函数以及字符串操作的方法. 字符串操作: 获取他的命令输出比较简单,打个简单的比方 ...
- Shell脚本中cd命令使用
在写shell脚本的时候发现cd切换目录的时候无法切换,代码是下面的. #!/bin/bash #changedir.sh history cd /home/firefox sleep pwd 我仔细 ...
- 通过ant调用shell脚本执行adb命令
在Hudson或者Jenkins中利用ant的exec 来调用shell命令,通过shell脚本来执行adb shell命令,可以正常执行,不会出现在ant中直接调用adb shell出现的假死情况. ...
- 查看当前支持的shell,echo -e相关转义符,一个简单shell脚本,dos2unix命令把windows格式转为Linux格式
/etc/shells [root@localhost ~]# more /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bi ...
随机推荐
- Hadoop实战:明星搜索指数统计,找出人气王
项目介绍 本项目我们使用明星搜索指数数据,分别统计出搜索指数最高的男明星和女明星. 数据集 明星搜索指数数据集,如下图所示.猛戳此链接下载数据集 思路分析 基于项目的需求,我们通过以下几步完成: 1. ...
- 【Java密码学】XML签名
http://www.oracle.com/technetwork/articles/javase/dig-signature-api-140772.html XML签名的结构和类型 基本上XML签名 ...
- 白话SpringCloud | 第二章:服务注册与发现(Eureka)-上
前言 从本章节开始,正式进入SpringCloud的基础教程.从第一章<什么是SpringCloud>中我们可以知道,一个微服务框架覆盖的东西是很多的,而如何去管理这些服务或者说API接口 ...
- C 碎片五 数组
构造类型数据是有基本类型数据按照一定规则组成的.数组,结构体,共用体都属于构造类型的数据.数组是有序数据的集合,C语言数组中的每一个元素都属于同一个数据类型,用数组名和下标来唯一确定数组中的元素. 一 ...
- 如何从MYSQL官方YUM仓库安装MYSQL5.x 原理一样只要获取对的仓库依赖安装对的仓库依赖就ok了,我就是用这种安装的5.7
如何从MYSQL官方YUM仓库安装MYSQL5.6 2013年10月,MySQL开发团队正式宣布支持Yum仓库,这就意味着我们现在可以从这个Yum库中获得最新和最优版的MySQL安装包.本文将在一台全 ...
- SQL Server date 设置默认值
根据时间做数据统计计算最讨厌开始和结束时间字段是NULL,为了处理NULL要写很多语句. 那么在数据库设计的时候给一个默认值:0001-01-01和9999-12-31,会给开发人员带来很大的便利. ...
- Python之HTML的解析(网页抓取一)
http://blog.csdn.net/my2010sam/article/details/14526223 --------------------- 对html的解析是网页抓取的基础,分析抓取的 ...
- git简易使用指南
git简易使用指南 Git是一个分布式版本控制/软件配置管理软件,原是Linux内核开发者林纳斯·托瓦兹(Linus Torvalds)为更好地管理Linux内核开发而设计.应注意的是,这与GNU I ...
- 【POJ2774】Long Long Message(后缀数组求Height数组)
点此看题面 大致题意: 求两个字符串中最长公共子串的长度. 关于后缀数组 关于\(Height\)数组的概念以及如何用后缀数组求\(Height\)数组详见这篇博客:后缀数组入门(二)--Height ...
- 【洛谷1967】货车运输(最大生成树+倍增LCA)
点此看题面 大致题意: 有\(n\)个城市和\(m\)条道路,每条道路有一个限重.多组询问,每次询问从\(x\)到\(y\)的最大载重为多少. 一个贪心的想法 首先,让我们来贪心一波. 由于要求最大载 ...