shell知识点

设置变量  set命令输出所有的变量包括全局和局部

               env只显示全局

               declare 输出所有的变量、函数、整数、和已导出的变量

   引号使用 单引号:所见即所得,将单引号的内容原样输出

                 双引号:输出双引号的所有内容、如果内容有命令需要用反引号

                 反引号:一般引用命令

特殊变量 $0:获取当前执行脚本的文件名

             $n:获取当前执行的shell脚本的第n个参数

             $#:获取当前shell脚本后面参数的总个数

              $@:获取脚本所有传参的参数

              $?:获取上一个执行的状态的返回值

              $$:获取当前执行脚本的进程号

             获取参数时当数字大于9 需要用${10} 大括号括起来

echo输出参数  -n 不换行输出内容

                      -e 解析转义字符    \n 换行\r 回车\t 制表符\b 退格

#!/bin/sh
echo $1 $2              #取第一个和第二个参数
if [ $# -eq 2 ]           # $# 取传参的个数
then
shift                    #shift 作用是往左移一位  
echo $1

fi

变量子串   ${变量}  返回变量的内容

                ${#变量}  返回变量的长度

                ${变量:2:2} 从第二个字符开始截取截取2个字符

xargs完成了两个行为:处理管道传输过来的stdin;将处理后的传递到正确的位置上。

xargs使用-p选项是交互询问式的,只有每次询问的时候输入y(或yes)才会执行,直接按enter键是不会执行的。

xargs -d有如下行为:

?  xargs -d可以指定分段符,可以是单个符号、字母或数字。如指定字母o为分隔符:xargs -d"o"

?  xargs -d是分割阶段的选项,所以它优先于分批选项(-n-L-i)。

?  xargs -d不是先xargs-d处理的,它是区别于独立的xargs的另一个分割选项。

xargs -0的行为和xargs -d基本是一样的,只是-d是指定分隔符,-0是指定固定的\0作为分隔符。其实xargs -0就是特殊的xargs -d的一种,它等价于xargs -d"\0"。

xargs -0行为如下: 

?  xargs -0是分割阶段的选项,所以它优先于分批选项(-n-L-i)。

?  xargs -0不是先xargs-0处理的,它是区别于独立的xargs的另一个分割选项。

?  xargs -0可以处理接收的stdin中的null字符(\0)。如果不使用-0选项或- -null选项,检测到\0后会给出警告提醒,并只向命令传递非\0段。xargs -0- -null是一样的效果。

xargs -0会忽略所有文本意义上的符号,它的主要目的是处理\0符号

xargs -I(大写字母i)和xargs -i是一样的,只是-i默认使用大括号作为替换符号,-I则可以指定其他的符号、字母、数字作为替换符号,但是必须用引号包起来。man推荐使用-I代替-i,但是一般都图个简单使用-i,除非在命令中不能使用大括号,如touch {1..1000}.log时大括号就不能用来做替换符号。

方法一:通过常用的find的-print0选项使用\0来分隔而不是\n分隔,再通过xargs -0来配对保证one space.log的整体性。因为-print0后one space.log的前后各有一个\0,但是文件名中间没有。

[root@xuexi tmp]# find -name "* *.log" -print0 | xargs -0 rm -rf


方法二:不在find上处理,在xargs上处理,只要通过配合-i选项,就能宣告它的整体性。

[root@xuexi tmp]# find -name "* *.log" | xargs -i rm -rf "{}"


算数运算符: + -  *(乘) /(除) %取余数  ** 幂运算 ++ 增加 --递减  !取反 &&与 ||或

i=2  i=i+8 echo $i 结果为i=8    如果是let i=i+8  结果就对了

let演示脚本

#!/bin/sh
#set -x
function checkurl(){
time=5
faild=0
success=0
while true
do
wget --timeout=$time --tries=1 badddidu.com -q -o /dev/null
if [ $? -ne 0 ]
then
let faild=$faild+1
else
let success=$success+1
fi
if [ $success -ge 1 ]
then
echo success
exit 0
fi
if [ $faild -ge 2 ]
then
echo system is down
exit 2
fi
done
}
checkurl

read用法   read -t时间默认为秒  -p ”please input a num “  num 用于接受用户输入的字符

示例

#!/bin/sh
read -t 20 -p "please input two numbers" a b
if [ ${#a} -le 0 ];then
echo "the first num is null"
else
echo "the first num is not null"
exit 1
fi
[ ${#b} -le 0 ]&&{
echo "the second num is null"
exit 2
}
#no.2
expr $a + 1 &>/dev/null
val=$?
expr $b + 1 &>/dev/null
val1=$?
if [ $val -ne 0 -o $val1 -ne 0 ];then 
echo "first and second is null"
exit 1

fi




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值