得之我幸 失之我命

when someone abandons you,it is him that gets loss because he lost someone who truly loves him but you just lost one who doesn’t love you.

在 C++ 中有好几个术语,它们有两个词组成,交换顺序后意思就变了,而在使用过程中,常常可能因为对它们的混淆导致误人子弟

这几组术语分别是:

  1. 函数指针 vs 指针函数
  2. 数组指针 vs 指针数组
  3. 类模板 vs 模板类
  4. 函数模板 vs 模板函数

可以明确的是,上述几个术语中,重心在后面,前面的词是作为形容词使用的

Read More...


一个变量有三种可能的状态:未设定,空值,非空值,针对这三种情况,shell 可以进行不同的操作

Read More...


shell 脚本传参

$ 传参家族

创建一个脚本 test.sh,内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash
echo $0 # 当前脚本的文件名(间接运行时还包括绝对路径)
echo $3 # $n,传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是 $1
echo $# # 传递给脚本或函数的参数个数,不包括 $0

# $* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号 ("") 包含时,都以"$1""$2" … "$n" 的形式输出所有参数;但是当它们被双引号 ("") 包含时,"$*" 会将所有的参数作为一个整体,以 "$1 $2 … $n" 的形式输出所有参数,"$@" 会将各个参数分开,以 "$1""$2" … "$n" 的形式输出所有参数
echo $* # 传递给脚本或函数的所有参数,不包括 $0
echo $@ # 传递给脚本或函数的所有参数,不包括 $0

echo $? # 上个命令的退出状态,或函数的返回值
echo $$ # 当前 Shell 进程 ID,对于 Shell 脚本,就是这些脚本所在的进程 ID
echo $_ # 上一个命令的最后一个参数
echo $! # 后台运行的最后一个进程的 ID 号

Read More...


大学的时候买了一个 Lenovo yoga2 i3 款,这个配置装 win 是有点弱了,于是就给它装了自己熟悉的 debian,还记得某个假期因为它没有有线网口,装系统的时候为了连接网络拿着 u 盘拷 iwifi 文件的经历

回到正题,现在它已经从桌面端退役,正式开始成为私人服务器,这时候就有问题接踵而来,首先,它自身的硬盘容量是不够用了的,手上有块 2t 的移动硬盘可以用,如果只是用 mount,在重启后挂载会失效,那要怎么实现移动硬盘的自动挂载呢

Read More...


本次讨论的是下面几个输出重定向(bash):

  • 2>&-
  • 2>/dev/null
  • |&
  • &>/dev/null
  • >/dev/null 2>&1

首先要清楚:

  • 1 是 standard out (stdout)
  • 2 是 standard error (stderr)
  • 如果没有给出明确的数字,bash 会假定给的是 1

Read More...


19 年开始接触 Jenkins,但是并没有跟 jf 有过多的交道,今年又碰到了它,并且和 jf 有了初步的接触,于是问题也是接踵而来,比如今天讨论的这个问题:在 jf 中执行 shell 脚本,当 shell 脚本遇到错误的时候,Jenkins 会忽略后续所有的步骤,为啥?咋办?

Read More...


字符串操作是个永远绕不过的题,截取和替换都是必不可少的

1
2
3
4
5
6
7
8
9
10
11
12
13
# shell 中截取字符串的方法很多
${var#*/}
${var##*/}
${var%/*}
${var%%/*}
${var:start:len}
${var:start}
${var:0-start:len}
${var:0-start}

# shell 字符串变量值的替换
${var/sct/dst}
${var//sct/dst}

Read More...


the only present love demands is love