文档章节

Shell 备忘录【1】

Inchin
 Inchin
发布于 2016/05/04 00:30
字数 724
阅读 63
收藏 9

1、比较

-eq       等于,如:if [ "$a" -eq "$b" ]
-ne       不等于,如:if [ "$a" -ne "$b" ]
-gt       大于,如:if [ "$a" -gt "$b" ]
-ge       大于等于,如:if [ "$a" -ge "$b" ]
-lt       小于,如:if [ "$a" -lt "$b" ]
-le       小于等于,如:if [ "$a" -le "$b" ]
-z       字符串为"null".就是长度为0. if [ -z "$a" ]
-n       字符串不为"null" if [ -n "$a" ]

2、检测变量类型

# check value type
function check(){
        local a="$1"
        printf "%d" "$a" &>/dev/null && echo "integer" && return
        printf "%d" "$(echo $a|sed 's/^[+-]\?0\+//')" &>/dev/null && echo "integer" && return
        printf "%f" "$a" &>/dev/null && echo "number" && return
        [ ${#a} -eq 1 ] && echo "char" && return
        echo "string"
}

3、计算文件行数

max_count=$(wc -l ./host.list |awk '{ print $1 }')

4、for循环读取

for ip in $(head -n 20 ./host.list)
do
  echo $ip
  ssh $ip 'hostname'
done;

5、用密码自动登录

auto_login_ssh () {
    expect -c "set timeout -1;
                spawn -noecho ssh -o StrictHostKeyChecking=no $2 ${@:3};
                expect *assword:*;
                send -- $1\r;
                interact;";
}
auto_login_ssh password root@10.10.10.10

6、执行远程机器命令

fr=$(echo `ssh root@$ip "find / -name $1"`)
     if [ "$fr" == "" ]
        then
          echo "Not Found "
        else
          echo "Found it: $fr"
        fi

7、while遍历文件

while read line
do
  echo $line
done < ./host.list

8、输入隐藏并验证密码,echo不换行

while [ -z $bigpass ] || [ "$bigpass" !=  "$bigpass2" ]
do
  if [ -n "$bigpass" ]
  then
    echo "Sorry, passwords do not match. pls retry"
  fi
  echo -n "Password:"
  stty -echo
  echo ""
  read bigpass
  stty echo
  echo -n "Confirm password:"
  stty -echo
  read bigpass2
  stty echo
  echo ""
done

9、输出本地格式日期

echo  "$(date +%Y%m%d%H%M%S).old"

10、算术运算

运算符号依旧是 + - * /
不过使用时候要注意:

r=`expr 4 + 5`
r=$(( 4 + 5 ))
r=$[ 4 + 5 ]
let r=4 + 5

r=`expr 4 \* 5`
r=$(( 4 * 5 ))
r=$[ 4 * 5 ]
let r=4 * 5

r=`expr 40 / 5`
r=$(( 40 / 5 ))
r=$[ 40 / 5 ]
let r=40/5 

乘幂 (如 2 的 3 次方)
r=$(( 2 ** 3 ))
r=$[ 2 ** 3 ]
expr 沒有乘幂

11、输出彩色字符

#!/bin/sh
NORMAL=$(tput sgr0)
GREEN=$(tput setaf 2; tput bold)
YELLOW=$(tput setaf 3)
RED=$(tput setaf 1)

function red() {
    echo -e "$RED$*$NORMAL"
}

function green() {
    echo -e "$GREEN$*$NORMAL"
}

function yellow() {
    echo -e "$YELLOW$*$NORMAL"
}

# To print success
green "Task has been completed"

# To print error
red "The configuration file does not exist"

# To print warning
yellow "You have to use higher version."

12、shell中的特殊变量

$0:当前脚本的文件名

$num:num为从1开始的数字,$1是第一个参数,$2是第二个参数,${10}是第十个参数

$#:传入脚本的参数的个数

$*:所有的位置参数(作为单个字符串)

$@:所有的位置参数(每个都作为独立的字符串)。

$?:当前shell进程中,上一个命令的返回值,如果上一个命令成功执行则$?的值为0,否则为其他非零值,常用做if语句条件

$$:当前shell进程的pid

$!:后台运行的最后一个进程的pid

$-:显示shell使用的当前选项

$_:之前命令的最后一个参数

13、删除文件中某行

比如:在1.txt里有以下内容:
HELLO=1
NI=2
WORLD=3
I Love China.
Love all
....

如果是要删除第三行:
sed -i '3d' 1.txt

如果删除以Love开头的行
sed -i '/^Love/d' 1.txt

删除包含Love的行
sed -i '/Love/d' 1.txt


本文转载自:http://biangbiang.cnblogs.com

Inchin
粉丝 0
博文 32
码字总数 8499
作品 0
长沙
技术主管
私信 提问
gnome-shell.css备忘录

OS:Fedora20 参考: 1.跟我一起修改Gnome Shell theme--http://planet.linuxdeepin.com/2012/02/07/customize-gnome-shell-theme-1/ 2.gnome-shell中文注释--http://www.94cat.com/blog/?p=11......

陈好
2014/02/11
0
0
Gof设计模式之备忘录模式 (Memento)

备忘录模式定义:备忘录是一个对象,它保存另一个对象在某一时刻的状态。 备忘录模式功能:在不破坏对象的封装性的前提下,保存对象的某一时刻的内部状态。 不破坏封装性,即不暴露对象不必要...

andy8712
2012/01/05
0
0
备忘录(Memento)模式

  备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式。   备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下...

小菜鸡1
2016/09/03
17
0
设计模式的学习(16)备忘录模式

备忘录模式 备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。 介绍 意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并...

杨健-YJ
01/02
0
0
折腾Java设计模式之备忘录模式

原文地址:折腾Java设计模式之备忘录模式 备忘录模式 Without violating encapsulation, capture and externalize an object's internal state allowing the object to be restored to this......

大萌小路
04/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

基础工具类

package com.atguigu.util;import java.sql.Connection;import java.sql.SQLException;import java.util.Properties;import javax.sql.DataSource;import com.alibaba.druid......

architect刘源源
今天
43
0
P30 Pro劲敌!DxO官宣新机:排行榜又要变

5月26日晚间,DxOMark官方推特预告,将在5月27日公布一款新机型的DxOMark评分,猜猜是哪款? 网友猜想的机型有:红米K20、谷歌Pixel 3a、索尼Xperia 1、诺基亚9 PureView等。 DxOMark即将公布...

linux-tao
昨天
15
0
Ubuntu18.04.2窗口过小不能自适应(二次转载)

解决Ubuntu在虚拟机窗口不能自适应 2018年09月06日 16:20:08 起不了名儿 阅读数 855 此博文转载:https://blog.csdn.net/nuddlle/article/details/77994080(原地址) 试了很多办法这个好用 ...

tahiti_aa
昨天
2
0
死磕 java同步系列之CountDownLatch源码解析

问题 (1)CountDownLatch是什么? (2)CountDownLatch具有哪些特性? (3)CountDownLatch通常运用在什么场景中? (4)CountDownLatch的初始次数是否可以调整? 简介 CountDownLatch,可以...

彤哥读源码
昨天
6
0
Nginx提供下载apk服务

有时候我们可能需要提供文件或者其他apk下载链接,通过 nginx 配置可以很简单地实现。 server {    listen 80;    server_name download.xxx.com;    root app;    locati...

Jack088
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部