linux下shell脚本写法,linux shell脚本

变量

Shell 变量主要分为三种:自定义变量、系统变量、预定义变量。

自定义变量:

命名规则:

命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。

中间不能有空格,可以使用下划线(_)。

不能使用标点符号。

不能使用bash里的关键字(可用help命令查看保留关键字)。

变量名和等号之间不能有空格

使用变量:

your\_name\="lala"

echo $your\_name

echo ${your\_name}

{}可以不加

只读变量:使用readonly

#!/bin/bash myUrl\="http://www.google.com"

readonly myUrl

删除变量

unset variable\_name

系统变量

系统变量是指默认就存在的,主要有:

HOME:用户主目录

PATH:系统环境变量 PATH

TERM:当前终端

UID:当前用户 ID

PWD:当前工作目录,绝对路径

预定义变量

预定义变量常用来获取命令行的输入,主要有:

$0:脚本文件名

$1-9:第 1-9 个命令行参数名

$#:命令行参数个数

$@:所有命令行参数

$*:所有命令行参数

$?:前一个命令的退出状态,可用于获取函数返回值

$$:执行的进程 ID

“$@”用于创建一个包含所有参数的列表。下面程序是用 for 语句来顺次处理所有参数时就会用到它。

1 #!/bin/sh

2

3 echo $0

4 for item in "$@"; do

5 echo $item

6 done

运算符

可以采用下面4中调用方式

#!/bin/bash

m=1

m=$\[ m + 1 \]

m=\`expr $m + 1\`

let m=m+1 \# 注意 + 号左右不要加空格

m=$(( m + 1 ))

语句

if语句

if [ 条件判断式 ]

then 程序

elif [ 条件判断式 ]

then 程序

fi

例子:

判断语句的3种写法

1 #!/bin/sh

2

3 message="Hello"

4

5 if test "$message" = "Hello"; then

6 echo "Hello World"

7 fi

8

9 if [ "$message" = "Hello" ]; then

10 echo "Hello World"

11 fi

12

13 if [[ $message == "Hello" ]]; then

14 echo "Hello World"

15 fi

用于字符串的比较:

字符串1 ==字符串2:字符串匹配

字符串1 !=字符串2:字符串不匹配

-z字符串:字符串为空

-n字符串:字符串不为空

字符串== 模式:字符串与模式相匹配

字符串!= 模式:字符串与模式不匹配

用于数组的比较:

数值1 -eq数值2:数值相等(equal)

数值1 -ne数值2:数值不相等(not equal)

数值1 -lt 数值2:数值1小于数值2(less than)

数值1 -le 数值2:数值1小于或等于数值2(less or equal)

数值1 -gt 数值2:数值1 大于数值2(greater than)

数值1 -ge 数值2:数值1 大于或等于数值2(greater or equal)

用于文件检查:

-e文件名: 该文件存在

-d文件名: 是目录

-h文件名: 是符号链接

-f文件名: 是常规文件

用于条件的逻辑运算

条件1&&条件2:两者都成立

条件1 ||条件2:某一方(或两者)成立

! 条件:条件不成立

true:始终成立

false:始终不成立

case语句

case $ 变量名 in

“值 1”) 执行程序1;;

“值 2”) 执行程序2;;

esac

for循环

for 变量 in 值 1 值 2 值 3…

do

程序

done

for ((初始值;循环控制条件;变量变化))

do

程序

done

while循环

while [条件判断式]

do

程序

done

loop.sh

1 #!/bin/sh

2

3 while [[ true ]]; do

4 sleep 60

5 echo "Hello World"

6 done

select语句

1 #!/bin/sh

2

3 menu=( "Apple" "Grape" "Orange" )

4

5 PS3=“喜欢哪个?”

6

7 select item in ${menu[@]}; do

8 echo “喜欢 $item”

9 done

函数

定义函数有两种方式:

1、function fun_name() { }

2、fun_name() { }

调用函数有3种方式

# 直接用函数名调用 test 函数

test

# 使用「函数名 函数参数」来传递参数

test 1 2

# 使用「FUN=`函数名 函数参数`」 来间接调用

FUN=`test 1 2`

echo $FUN

例子

按输入选择数据库

1 #!/bin/sh

2

3 servers=(

4 "server01.example.com"

5 "user01@server02.example.com"

6 "root@server03.example.com"

7 "QUIT"

8 )

9

10 PS3=“连接服务器?”

11

12 select server in "${servers[@]}"; do

13 if [[ -z $server ]]; then

14 echo“请选择菜单内的数字”

15 continue

16 fi

17 if [[ $server == "QUIT" ]]; then

18 echo“退出”

19 exit 0

20 fi

21 echo“连接 $server”

22 ssh "$server"

23 done

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值