linux shell编写(持续更新)

1.bash

-下面这行代码的意思是告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程序。

#!/bin/bash

2.变量(要注意赋值时不能有空格)

定义

定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:
a=”毓峰大神喜欢学霸姐”

使用(只要有{},哪里都能识别出来并使用)

echo ${a}
echo $a
#最好加上{},让编译器更好区分边界
#比如echo "$ab"   编译器就会以为你是要输出变量ab

3.字符串

双引号里可以有变量
字符串实际只是带入而已

单引号和双引号
str='this is a string'
#单引号字符串的限制:
#单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
#单引号字串中不能出现单引号(对单引号使用转义符后也不行)。
your_name='毓峰大神'
str="I know \"${your_name}\"喜欢学霸姐! \n"
#**双引号里可以有变量**
#双引号里可以出现转义字符

字符串拼接

a="aa"
b="bb"
c=$a$b
-----------------------------------------------------
a[0]=1
a[1]=2
a[2]=3
for i in ${a[*]};  
> do
> d=$d$i
> echo $d
> done
1
12
123

字符串长度

string="abcd"
echo ${#string} 

子串(左闭右开)

#输出子串
string="abcd"
echo ${string:0:2}
#输出 ab
#查找子字符串
#查找字符 "i 或 s" 的位置:
string="runoob is a great company"
echo `expr index "$string" is`  # 输出 8

数组

定义

a=("01234",2,3)
#可以不使用连续的下标,而且下标的范围没有限制。
a[3]="444

读取数组

#如果一开始没有用下标,整个就会被默认为0
${a[0]}  012342,3
${a[1]}  null
${a[2]}   null
${a[3]}   44
#下面这种方式只适合于数组是一个一个赋值的,不适合于初始化赋值
for i in ${a[*]}; 
do 
    echo $i; 
done
获取数组的长度
获取数组长度的方法与获取字符串长度的方法相同,例如:
# 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得数组单个元素的长度
lengthn=${#array_name[n]}

for循环

#!/bin/bash
for i in `ls /home/linjiaqin`
do
    echo ${i}
done

for i in a,b,c
do 
    echo $i
done

执行外部程序

#只要加上``
`ls /home/linjiaqin`
#命令行执行,直接写
ls /home/linjiaqin

传参数

$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数。
如"$*"用「"」括起来的情况、以"$1 $2$n"的形式输出所有参数。
$$	脚本运行的当前进程ID号
$!	后台运行的最后一个进程的ID号
$@	与$*相同,但是使用时加引号,并在引号中返回每个参数。
如"$@"用「"」括起来的情况、以"$1" "$2""$n" 的形式输出所有参数。
$-	显示Shell使用的当前选项,与set命令功能相同。
$?	显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
-------------------------------------------------------------
#!/bin/bash
echo "当前进程ID号: $$"
echo "first parameter is : $1"
echo $1
echo "second parameter is : $2"
echo $2
echo "third paramegter is : $3"
echo "参数个数: $#"
echo "全部作为一个字符串: $*"

for i in "$*"
do
    echo $i
done

echo "作为多个字符串: $@"
for i in "$@"
do 
    echo $i
done
---------------------------------------------------------
$* 与 $@ 区别:
相同点:都是引用所有参数。
不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 123,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。
echo "-- \$* 演示 ---"
for i in "$*"; do
    echo $i
done
echo "-- \$@ 演示 ---"
for i in "$@"; do
    echo $i
done
执行脚本,输出结果如下所示:
$ chmod +x test.sh 
$ ./test.sh 1 2 3
-- $* 演示 ---
1 2 3
-- $@ 演示 ---
1
2
3

运算符

算数运算符

expr表达式和运算符之间要有空格

#!/bin/bash
val=`expr 2 + 2`
echo "两数之和为 : $val"
运行实例 »
执行脚本,输出结果如下所示:
两数之和为 : 4

两点注意:
**表达式和运算符之间要有空格**,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。
完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下边。

比较运算符

#数字用 lt,gt,eq, == !=
#字符串用  =, !=, -z, str

文件运算符

-r file 检测文件是否可读,如果是,则返回 true。  [ -r $file ] 返回 true-w file 检测文件是否可写,如果是,则返回 true。  [ -w $file ] 返回 true-x file 检测文件是否可执行,如果是,则返回 true。 [ -x $file ] 返回 true-s file 检测文件是否为空(文件大小是否大于0),不为空返回 true。 [ -s $file ] 返回 true

if表达式(if [ ](then else) fi成对)

#必须有空格空开
if [ $a == $b ]
then
   echo "a 等于 b"
else
   echo "a 不等于 b"
fi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值