$1 入参,空值时默认赋值技巧
$* 和 $@ 区别
$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" “)包含
时,都以”$1" “
2
"
…
"
2" … "
2"…"n” 的形式输出所有参数。
但是当它们被双引号(" “)包含时,”$*" 会将所有的参数作为一个整体,
以"$1 $2 … $n"的形式输出所有参数;"
$@" 会将各个参数分开,以"$1" “
2
"
…
"
2" … "
2"…"n” 的形式输出所有参数。
区别在于,分别输出 1 2 3 和
1
2
3
几个 Shell 里的内置变量
1
2
3
4
$# 入参个数
$$ PID
$0 文件名
$? 上个命令执行结果
Tips:
awk 教程 https://coolshell.cn/articles/9070.html
sed 教程 https://coolshell.cn/articles/9104.html
Shell script 基础问答 https://linux.cn/ar
Shell 四则运算方法
let C=A+B
let A++ #let 时 变量前不需要再加$
echo
(
(
((
((A+$B))
echo
[
[
[A+$B]
expr $A + $B
echo
A
+
A+
A+B | bc #使用 bc 可以做比较复杂的运算
1
2
3
4
5
6
let C=A+B
let A++ #let 时 变量前不需要再加$
echo
(
(
((
((A+$B))
echo
[
[
[A+$B]
expr $A + $B
echo
A
+
A+
A+B | bc #使用 bc 可以做比较复杂的运算
函数定义与调用
定义
function myfun(){ #function 可省略
echo $1 echo “-----”
echo $2 echo “-----”
echo $3
}
调用
myfun “tom” “lucy” “jack”
1
2
3
4
5
6
7
8
定义
function myfun(){ #function 可省略
echo $1 echo “-----”
echo $2 echo “-----”
echo $3
}
调用
myfun “tom” “lucy” “jack”
条件判断
if [[ biaodashi ]]
判断文件是否存在 -f 存在真
判断目录是否存在 -d 存在真
判断字符串是否空 -z 字符串长度为 0 真
判断文件大小 -s 文件大小非 0 真
if [[ 条件 1 -a 条件 2 ]] # -a 表示与, -o 表示或
1
2
3
4
5
6
if [[ biaodashi ]]
判断文件是否存在 -f 存在真
判断目录是否存在 -d 存在真
判断字符串是否空 -z 字符串长度为 0 真
判断文件大小 -s 文件大小非 0 真
if [[ 条件 1 -a 条件 2 ]] # -a 表示与, -o 表示或
字符串与序列、随机数
name=John && echo ‘My name is $name’ 输出’My name is
n
a
m
e
,
因
为
单
引
号
里
面
的
name ,因为单引号里面的
name,因为单引号里面的只会当作字面值
字符串截取 a=123456789 ; echo ${a:0:3} 输出 123
echo 替换字符
var=tom_tom_lucy_jack_tomomttom
echo ${var/tom/mary} mary_tom_lucy_jack_tomomttom
echo ${var//tom/mary} mary_mary_lucy_jack_maryomtmary
1
2
3
var=tom_tom_lucy_jack_tomomttom
echo ${var/tom/mary} mary_tom_lucy_jack_tomomttom
echo ${var//tom/mary} mary_mary_lucy_jack_maryomtmary
序列
for i in {1…100} #1,2,3,4…100 这种方法好些,还可以输出间
隔系列
for i in {1…100…7} #1,8,15…99
for i in seq 100
#1,2,3,4…100
for i in seq 3 5
#3,4,5
1
2
3
4
5
for i in {1…100} #1,2,3,4…100 这种方法好些,还可以输出间
隔系列
for i in {1…100…7} #1,8,15…99
for i in seq 100
#1,2,3,4…100
for i in seq 3 5
#3,4,5
随机数
echo $RANDOM
head /dev/urandom |md5sum|cksum|cut -c 1-9
1
2
echo $RANDOM
head /dev/urandom |md5sum|cksum|cut -c 1-9