编写 Shell 脚本的过程
-
创建脚本文件
vi 文件名.sh- 在文件的第一行必须指定解释器:
#!/bin/bash
-
提升权限
- 新创建的
.sh文件默认权限通常是664(-rw-rw-r--),没有可执行权限(x)。 - 使用
chmod命令添加可执行权限:chmod 777 文件名.sh(赋予所有用户读、写、执行权限)- 或更安全的方式:
chmod u+x 文件名.sh(仅赋予文件所有者执行权限)
- 新创建的
-
运行脚本
./文件名.sh(使用路径方式执行)
Shell 编程关键点:
- 定义变量:
- 变量名=值 (等号两边绝对不能有空格)
a=10name="hello"
- 使用变量:
echo $a(使用$符号引用变量)
- 输入变量:
read a(从键盘读取输入,赋值给变量a)
- 取消变量:
unset a(取消变量a的定义,该命令的位置不影响其效果)
- 只读变量:
readonly a(将变量a设置为只读,之后不能修改其值,也不能unset)
- 预定义变量:
echo $0:打印当前执行的脚本文件名echo $1:打印执行脚本时传入的第一个参数echo $@:打印执行脚本时传入的所有参数echo $#:打印执行脚本时传入的参数个数
- 数学运算:
- 使用
expr命令或$(( ))语法 expr 1 + 2(运算符两边必须有空格)result=$((a + b))
- 使用
- 关系运算符(用于条件判断
[ ]或[[ ]]中):-eq(等于),-ne(不等于),-gt(大于),-lt(小于),-ge(大于等于),-le(小于等于)
- 文件测试运算符(用于条件判断):
-x file:判断文件是否有可执行权限-f file:判断是否为普通文件-d file:判断是否为目录
- 流程控制:
if,while,for,case
编写 C 语言代码的过程
-
创建源代码文件
vi 文件名.c
-
编译代码
- 使用
gcc(GNU Compiler Collection) 编译器将源代码编译成可执行文件。 gcc 文件名.c -o 输出的可执行文件名- 例如:
gcc hello.c -o hello会生成一个名为hello的可执行文件。
- 使用
-
运行程序
- 直接运行生成的可执行文件:
./输出的可执行文件名 - 例如:
./hello
- 直接运行生成的可执行文件:
关键点:
- 编译后生成的可执行文件默认就具有可执行权限(通常是
775,即-rwxrwxr-x),因此不需要像 Shell 脚本一样额外使用chmod命令来提升权限。
总结对比
| 步骤 | Shell 脚本 | C 程序 |
|---|---|---|
| 1. 创建 | vi 文件名.sh |
vi 文件名.c |
| 2. 编译/授权 | chmod +x 文件名.sh |
gcc 文件名.c -o 输出名 |
| 3. 运行 | ./文件名.sh |
./输出名 |
核心区别:
- Shell 是脚本语言,需要解释器直接执行源文件,因此源文件本身需要可执行权限。
- C 是编译型语言,源代码需要先被编译器(
gcc)翻译(编译和链接)成机器码,生成一个新的、独立的可执行文件。这个新的可执行文件天生就拥有执行权限。
