shell(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/feicongcong/article/details/84594079

转自http://c.biancheng.net/shell/

Shell 既是一种脚本编程语言,也是一个连接内核和用户的软件。

常见的 Shell 有 sh、bash、csh、tcsh、ash 等

Base shell 默认的提示符是美元符号$;对于超级用户(root 用户),Bash Shell 默认的提示符是井号#。该符号表示 Shell 等待输入命令。

Shell 是一个程序,一般都是放在/bin或者/user/bin目录下,当前 Linux 系统可用的 Shell 都记录在/etc/shells文件中。/etc/shells是一个纯文本文件,你可以在图形界面下打开它,也可以使用 cat 命令查看它

通过 cat 命令来查看当前 Linux 系统的可用 Shell:

$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh

查看当前 Linux 的默认 Shell

$ echo $SHELL
/bin/bash

touch test.sh

扩展名sh代表 shell,扩展名并不影响脚本执行,见名知意就好,如果你用 php 写 shell 脚本,扩展名就用php好了。

扫描二维码关注公众号,回复: 4350332 查看本文章

在 test.sh 中输入代码:

#!/bin/bash  #系统查找到正确的解释器

echo "Hello World !" #这是一条语句

第 1 行的#!是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell;后面的/bin/bash就是指明了解释器的具体位置。

第 2 行的 echo 命令用于向标准输出文件(Standard Output,stdout,一般就是指终端)输出文本。在.sh文件中使用命令与在终端直接输入命令的效果是一样的。

第 2 行的#及其后面的内容是注释。Shell 脚本中所有以#开头的都是注释(当然以#!开头的除外)

shell脚本也是一种解释执行的程序,可以在终端直接调用(需要使用 chmod 命令给 Shell 脚本加上执行权限),如下所示:

$ cd demo  #切换到 test.sh 所在的目录
$ chmod +x ./test.sh  #使脚本具有执行权限
$ ./test.sh  #执行脚本

第 2 行中,chmod +x表示给 test.sh 增加执行权限。
第 3 行中,./表示当前目录,整条命令的意思是执行当前目录下的 test.sh 脚本。如果不写./,Linux 会到系统路径(由 PATH 环境变量指定)下查找 test.sh,而系统路径下显然不存在这个脚本,所以会执行失败。
通过这种方式运行脚本,第一行一定要写对,好让系统查找到正确的解释器。

1) 使用点号“.”

点号用于执行某个脚本,甚至脚本没有可执行权限也可以运行。有时候在测试运行某个脚本时可能并不想为此修改脚本权限,这时候就可以使用.来运行脚本,非常方便

$ . ./test.sh   #两点之间有空格

2) 使用 source 命令

与点号类似,source 命令也可读取并在当前环境中执行脚本,同时还可返回脚本中最后一个命令的返回状态;如果没有返回值则返回 0,代表执行成功;如果未找到指定的脚本则返回 false。

$ source test.sh

作为解释器参数

这种运行方式是,直接运行解释器,其参数就是 shell 脚本的文件名,如:$ /bin/bash test.sh

下面的脚本使用 read 命令从 stdin 获取用户输入的内容并赋值给 PERSON 变量,最后在 stdout 上输出

#!/bin/bash

# Copyright (c) http://c.biancheng.net/shell/

echo "What is your name?"

read PERSON

echo "Hello, $PERSON"

猜你喜欢

转载自blog.csdn.net/feicongcong/article/details/84594079