shell script 编写和执行

1. shell script


shell script是针对shell写的脚本。
使用纯文本文件, 将一些shell的语法和命令写在里面,使用户能处理复杂的操作。

2. 编写shell script


先写 hello world。
#!/bin/bash
# desc : the first shell script
# author : yonggang
# date : 2014-01-01

echo -e "hello world. \n";
exit 0;
第一行“#!/bin/bash” ,声明文件内使用bash语法。当程序执行时,能够自动加载bash的相关环境配置文件。
# 表示注释
exit表示中断程序,并且返回 0 给系统.

3. shell script 执行


直接命令执行:
    需要文件有rx权限。
    当前目录下使用相对路径:  ./hello.sh 
    或者使用绝对路径: /home/work/hello.sh
以bash命令执行:
    sh hello.sh  或 bash hello.sh
    这时只需要r权限。
    /bin/sh 是系统内 /bin/bash 的连接文件,所以使用 sh hello.sh 也可以执行。

4. 使用source执行


source 会让shell在父进程中执行。
#!/bin/bash

user_name="gang"
echo -e "User name is : ${user_name}"
执行
[work@www sh]$ sh hello.sh 
User name is : gang
[work@www sh]$ echo $user_name

[work@www sh]$ source hello.sh 
User name is : gang
[work@www sh]$ echo $user_name 
gang
[work@www sh]$ 
source会让脚本在父进程中执行。

如果修改~/.bashrc , 在不注销系统情况下想设置生效时,使用 source ~/.bashrc.

5. 默认变量


shell script中的变量可以使用, 命令后面跟参数的形式传递进去。
“sh hello.sh one two”
文件名为$0,  即 hello.sh
$1 为 one
$2  为 two

$# : 参数个数
$@ : 代表“$1” "$2" 等, 用“”包围。
$* : 代表“$1c$2c$3”, c为分隔字符,默认为空格,本例中代表: “$1 $2”
#!/bin/bash

echo "The script name  => $0"
echo "Parameter number => $#"
echo "Whole parameter is => $@"
echo "The first is   => $1"
echo "The Second is => $2"
运行结果
[work@www sh]$ sh hello.sh one two three four
The script name  => hello.sh
Parameter number => 4
Whole parameter is => one two three four
The first is   => one
The Second is => two
[work@www sh]$ 

shift可以改变参数变量,将最开始的删掉
#!/bin/bash

echo "Parameter number => $#"
echo "Whole parameter is => $@"
shift
echo "Parameter number => $#"
echo "Whole parameter is => $@"

shift 2
echo "Parameter number => $#"
echo "Whole parameter is => $@"
运行
[work@www sh]$ sh hello.sh one two three four five six 
Parameter number => 6
Whole parameter is => one two three four five six
Parameter number => 5
Whole parameter is => two three four five six
Parameter number => 3
Whole parameter is => four five six
第一次shift 删掉 one
第二次shift 2  删掉 two three 两个

地址: http://blog.csdn.net/yonggang7/article/details/40478101

你可能感兴趣的:(shell,脚本,bash)