Java教程

Shell编程基础

本文主要是介绍Shell编程基础,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 

1.cat /etc/shells #查看系统中安装的 shell

 

2.eg1.

#!/bin/bash

echo "Hello World !"

 

3.Shell 脚本的执行:

chmod +x ./hello.sh   #使脚本具有执行权限

./hello.sh    #执行脚本

/bin/sh /root/hello.sh #作为解释器参数运行,不需要在第一行指定解释器信息(shell种类),写了也不生效

简写为: sh /root/hello.sh

 

4.shell变量定义和引用:

your_name="itcast  .  cn" #变量名和等号之间不能有空格

echo $your_name

echo ${your_name}

变量名的命名须遵循如下规则:
l 首个字符必须为字母( a-z, A-Z)
l 中间不能有空格,可以使用下划线( _)
l 不能使用标点符号
l 不能使用 bash 里的关键字(可用 help 命令查看保留关键字)

readonly variable_name 只读

unset variable_name 删除

 

5.变量类型:

局部变量、环境变量(set #查看当前环境变量)、shell变量(shell 程序设置的特殊变量)。

 

6.参数传递:

在执行 Shell 脚本时, 可以向脚本传递参数。
脚本内获取参数的格式为: $n。 n 代表一个数字, 1 为执行脚本的第一个参
数, 2 为执行脚本的第二个参数,以此类推…… $0 表示当前脚本名称。

eg.  ./test.sh 1 2 3

注:特殊字符:

$#

传递到脚本的参数个数

$*

以一个单字符串显示所有向脚本传递的参数。

$$

脚本运行的当前进程 ID 号

$!

后台运行的最后一个进程的 ID 号

$@

与$*相同,但是使用时加引号,并在引号中返回每个参数。

$?

显示最后命令的退出状态。 0 表示没有错误,其他任何值表明有错误。

7.$*和$@区别

 

相同点: 都表示传递给脚本的所有参数。
不同点:
不被" "包含时, $*和$@都以$1 $2… $n 的形式组成参数列表。
被" "包含时, "$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式组成一个整串; "$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式组成一个参数列表。

 

8.Shell 运算符

 

支持包括:算术、关系、 布尔、字符串等运算符。 原生 bash 不支持简单的数学运算,但是可以通过其他命令来实现。

 

eg.   echo `expr $a + $b`  

echo `expr $b - $a` 

echo `expr $a \* $b` 

echo `expr $b / $a`

此外,还可以通过(())、 $[]进行算术运算。

count=1

((count++))

echo $count

a=$((1+2))

a=$[1+2]

 

9.流程控制:

 (1)if判断:-eq, -nq, -gt, -lt, -ge, -le

(2)for循环:注:for(())后面的分号,可省略。

(3)while循环:

(4)case分支:

(5)函数:

  所有函数在使用前必须定义,这意味着必须将函数放在脚本开始部分。

  可以带 function fun()定义,也可以直接 fun() 定义,不带任何参数。

  参数返回,可以显示加 return ,如果不加,将以最后一条命令运行结
果,作为返回值。 return 后跟数值 n(0-255)。

  当 n>=10 时,需要使用${n}来获取参数。

 

示例见以下2张图:

 

这篇关于Shell编程基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!