shell脚本基本表达式

查看系统的全局变量

##1. 查看当前系统中的所有的全局/系统变量
[root@localhost ~]# set

##2. 查看指定的变量指
[root@hadoop ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/apps/jdk1.8.0_45/bin:/opt/apps/tomcat-7.0.47/bin:/root/bin

##3. 自定义变量
[root@localhost ~]# a=1
[root@localhost ~]# set
a=1

##4. 撤销变量
[root@localhost ~]# unset a

变量的范围

##1. 查看当前系统中的所有的全局/系统变量
[root@localhost ~]# set

##2. 查看指定的变量指
[root@hadoop ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/apps/jdk1.8.0_45/bin:/opt/apps/tomcat-7.0.47/bin:/root/bin

##3. 自定义变量
[root@localhost ~]# a=1
[root@localhost ~]# set
a=1

##4. 撤销变量
[root@localhost ~]# unset a

静态变量

##1. 定义静态变量
[root@localhost tmp]# readonly a=1
##2. 静态变量不能撤销
[root@localhost tmp]# unset a
-bash: unset: a: cannot unset: readonly variable

特殊变量

##1. $? : 表示查询上一个命令的结果
[root@localhost tmp]# echo $?
1
[root@localhost tmp]# echo "123"
123
[root@localhost tmp]# echo $?
0
[root@localhost tmp]# safbabsd
-bash: safbabsd: command not found
[root@localhost tmp]# echo $?
127
## tip : 0表示成功,除此之外都是表示错误的代码

##2. $$ : 查看当前进程的编号
[root@localhost ~]# echo $$
6436

##3. $0 : 获取当前的脚本名称
[root@localhost tmp]# vi shelltest.sh
#!/bin/bash

name=$0
echo $name

[root@localhost tmp]# sh shelltest.sh
shelltest.sh

##4. $n : n表示1-9的数字。表示的是输入参数之意
[root@localhost tmp]# vi shelltest.sh
#!/bin/bash

arg1=$1
arg2=$2
echo "$arg1 - $arg2"
[root@localhost tmp]# sh shelltest.sh
 -
[root@localhost tmp]# sh shelltest.sh 1 2
1 - 2
[root@localhost tmp]# sh shelltest.sh lixi nb
lixi - nb
[root@localhost tmp]# sh shelltest.sh lixi nb 11
lixi - nb

##5. $# : #表示变量的个数
[root@localhost tmp]# vi shelltest.sh
arg1=$1
arg2=$2
echo "$arg1 - $arg2"
echo $#

[root@localhost tmp]# sh shelltest.sh lixi nb 11
lixi - nb
3
[root@localhost tmp]# sh shelltest.sh lixi nb
lixi - nb
2
[root@localhost tmp]# sh shelltest.sh lixi
lixi -
1

##6. $* 和 $@
##6.1 基本使用
[root@localhost tmp]# vi shelltest.sh
#!/bin/bash

echo '$*'
echo $*

echo '$@'
echo $@

[root@localhost tmp]# sh shelltest.sh lixi lidong linan libei
$*
lixi lidong linan libei
$@
lixi lidong linan libei

## $* 和 $@的区别
## $* :把被传入的参数当作是一个整体的字符串,而$@将参数存放到一个数组之中。

##6.2 举例对比
[root@localhost tmp]# vi shelltest.sh
#!/bin/bash

echo '$*'
for n in "$*" ## 类似于foreach
do ## {
echo $n
done ## }

echo '$@'
for n2 in "$@" ## 类似于foreach
do ## {
echo $n2
done ## }


[root@localhost tmp]# sh shelltest.sh lixi lidong linan libei
$*
lixi lidong linan libei
$@
lixi
lidong
linan
libei

if语句

#!/bin/bash
if [ $1 -ge 10 ]
then
    echo "你输入的值大于10"
elif [ $1 -lt 10 ]
then
  echo "你输入的值小于10"
else
  echo "你输入的不对"
fi

case语句

#!/bin/bash
#case语句

case $1 in
1|2|3|4|5)
  echo "你输入的值在1~5之间"
;;
*)
  echo "你输入的值不在1~5之间"
;;
esac

for语句

#!/bin/bash
#for语句

for i in $*
do
  echo "i的值为:"$i
done

echo "======================="

for n in {1..3}
do
  echo "1111"
done

echo "======================="
for ((i=0;i<4;i++))
do
  echo "i的值为:"$i
done

while

#!/bin/bash
#while

read -p "请你输入一个大于5的数:" num
#$num获取该值
while [ $num -gt 5 ]
do
   echo "加油"
#此时的num是定值,不需要$进行获取,直接进行--
   let num--
done

echo "===================="

while (($num>2))
do
   echo "中国"
   let num--
done

read

read -p(提示)
     -n(字符个数)
     -t(等待时间)

算数判断

-gt:大于  >
-lt: 小于 <
-ge:大于等于  >=
-le:小于等于   <=
-eq:等于     =
-ne:不等于   !=

权限判断

-r:判断一个文件是否具备读权限
-w:判断一个文件是否具备写权限
-x:判断一个文件是否具备执行权限
-f:判断是否为一个常规的文件
-d:判断目录
-b:判断是否为设备备件
➜  /tmp [ -f tmp4.sh ] 
➜  /tmp echo $?
0

函数

#!/bin/bash
function sum()
{
  echo "111"
}

sum
#这里调用的时候不用加括号
echo "===================="
arg()
{
echo "第一个参数:$1"
echo "第二个参数:$2"
echo "第n个参数:"$10
echo "第11个参数:${11}"
echo "参数的总个数:$#"
echo "奖参数当作是一个整体的字符串:$*"
}
arg 1 2 3 4 5 6 7 8 9 20 21 23

跨脚本调用函数

在跨脚本调用函数中
在该脚本中要标明要调用的脚本的绝对路径
#!/bin/bash
. /tmp/function.sh()
arg 1 2 3 4 5 6 7 8 9 20 21
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值