Linux Shell 编程入门
在 Linux 系统中,Shell 是一个重要的工具,它充当应用程序与计算机内核的交互桥梁。本文将介绍 Shell 编程的一些基本知识,并通过实例帮助你更好地理解和使用它。
什么是 Shell?
Shell 是一种解释型的编程语言,通过解释器将代码翻译成计算机可理解的语言。在 Linux 中,主要的解析器有两种:sh 和 bash。在 CentOS 系统中,默认的解析器是 bash。
示例:输出 “Hello, World!”
我们通过一个简单的实例来了解如何编写和执行 Shell 脚本。
-
新建一个文件
创建一个新的脚本文件,例如
helloworld.sh。 -
编辑文件
打开文件并添加以下内容:
#!/bin/bash echo "Hello, World!" -
执行脚本文件
执行脚本文件有两种方式:
-
使用
bash命令(相对):bash helloworld.sh -
增加可执行权限并直接执行(相对):
chmod +x helloworld.sh ./helloworld.sh -
使用
bash命令(绝对):bash /home/username/scripts/helloworld.sh -
增加可执行权限并直接执行(绝对):
chmod +x helloworld.sh /home/username/scripts/helloworld.sh
-
- 根据最小权限原则,只授予文件所需的权限,一般只需要增加执行权限,所以使用
a+x而不是777。
输出示例
-
普通字符串
echo "It is Linux.CN"输出:
It is Linux.CN -
转义字符串
echo "\"It is Linux.CN\""输出:
"It is Linux.CN" -
变量
name="Arch" echo "$name is the best Linux Distro!"输出:
Arch is the best Linux Distro! -
换行符
echo -e "show me your code!\nThis is the second line."输出:
show me your code! This is the second line. -
命令执行结果
echo $(date) echo $(pwd)输出:
-
第一个
echo $(date)会输出当前系统的日期和时间,例如:Wed Sep 18 12:34:56 UTC 2024 -
第二个
echo $(pwd)会输出当前的工作目录路径,例如:/home/user
-
变量
变量是用于存储数据的内存区域。自定义变量的示例如下:
greeting="Hello"
echo $greeting
注意事项
-
变量名可以是字母、数字和下划线的组合,但不能以数字开头。
-
等号两侧不能有空格。
-
变量默认为字符串,不能直接数字运算。
-
如果值中有空格,必须用单引号
'或双引号"引起来。 -
环境变量通常使用大写,如
PATH、HOME等,为了与用户自定义变量区分开来。 -
使用
unset撤销变量:unset greeting -
使用
readonly创建静态变量,不能修改,不能撤销:readonly pi=3.14
特殊变量
$n:表示执行脚本时传递给脚本的第n个参数。$#:表示传递给脚本的参数个数。$*和$@:获取所有参数。- 使用
"$*"时,加双引号时,参数被视为一个整体的字符串。 - 使用
"$@"时,参数被视为独立的元素,在需要单独处理每个参数时使用。 $?:表示上一条命令是否成功执行,成功返回 0。
示例说明
假设有一个脚本 example.sh,并以如下方式运行:
./example.sh arg1 arg2 arg3
-
$n:$1的值是arg1$2的值是arg2$3的值是arg3
-
$#:- 表示传递给脚本的参数个数。在这个例子中,
$#的值是3。
- 表示传递给脚本的参数个数。在这个例子中,
-
$*:- 将所有参数作为一个整体字符串。例如:
arg1 arg2 arg3 - 示例代码:
echo "$*" - 输出为:
arg1 arg2 arg3
- 将所有参数作为一个整体字符串。例如:
-
$@:- 将所有参数视为独立的元素。
- 示例代码:
for arg in "$@"; do echo "$arg" done - 输出为:
arg1 arg2 arg3
-
$?:- 表示上一条命令的退出状态码。成功执行返回
0。 - 示例代码:
ls echo $? - 如果
ls成功执行,输出为:0 - 如果
ls失败(例如目录不存在),输出为非0的错误代码。
- 表示上一条命令的退出状态码。成功执行返回
通过以上内容和示例,可以开始基本的 Shell 编程,在 Linux 下实现自动化任务和系统管理。希望这篇文章对你有所帮助!
727

被折叠的 条评论
为什么被折叠?



