厦门安岭路网站建设,网站建设营业执照,wordpress型营销,小公司做网站需要1. 基本结构
Shebang 行
#!/bin/bash # Shebang 行指定了脚本使用的解释器。
/bin/bash 表示使用 Bash 解释器执行脚本。
注释
# 这是注释#xff0c;不会被执行
2. 变量
定义变量
variable_namevalue # 不需要加 $ 来定义变量。
# 变量名不能包含空格或特殊字符。
访…1. 基本结构
Shebang 行
#!/bin/bash # Shebang 行指定了脚本使用的解释器。
/bin/bash 表示使用 Bash 解释器执行脚本。
注释
# 这是注释不会被执行
2. 变量
定义变量
variable_namevalue # 不需要加 $ 来定义变量。
# 变量名不能包含空格或特殊字符。
访问变量
echo $variable_name
# 使用 $ 符号来访问变量的值。
环境变量
echo $PATH echo $HOME
# 环境变量是全局可用的如 PATH 和 HOME。
局部变量
local varlocal_value
# 在函数中使用 local 关键字定义局部变量。
变量赋值和引用
greetingHello
nameWorld
echo $greeting, $name!
# 使用双引号引用变量保留变量中的空格和特殊字符。
3. 输入输出
标准输入输出
read -p Enter your name: name
# read 命令用于从标准输入读取用户输入。
# -p 选项用于显示提示信息。
echo Hello, $name! # echo 命令用于输出信息到标准输出。 文件重定向
echo Hello World file.txt #
将输出重定向到文件如果文件存在则覆盖。
echo Another line file.txt #
将输出追加到文件末尾。 cat file.txt
# 将文件内容作为输入。 管道符
ls | grep .txt
# | 将一个命令的输出作为另一个命令的输入。
4. 控制结构
if 语句
if [ condition ]; then # do something elif [ another_condition ];
then # do something else else
# default action fi # 使用 [ ] 或 [[ ]] 来进行条件判断。
# 支持逻辑运算符-eq等于、-ne不等于、-gt大于、-lt小于、-ge大于等于、-le小于等于。
示例
number10 if [ $number -gt 5 ];
then echo Number is greater than 5 elif [ $number -eq 5 ];
then echo Number is equal to 5 else echo Number is less than 5 fi
for 循环
for i in 1 2 3 4 5; do echo $i done
# for 循环遍历一系列值。
示例
for fruit in apple banana cherry;
do echo Fruit: $fruit done
C风格的for循环
for ((i0; i5; i)); do echo $i done
# C风格的 for 循环类似于 C 语言中的 for 循环。
示例
for ((i0; i5; i));
do echo Iteration: $i done
while 循环
while [ condition ];
do # do something done
# while 循环在条件为真时重复执行。
示例
count0 while [ $count -lt 5 ];
do echo Count: $count count$((count 1)) done
until 循环
until [ condition ];
do # do something done
# until 循环在条件为假时重复执行。
示例
count0 until [ $count -ge 5 ];
do echo Count: $count count$((count 1)) done
case 语句
case $var in value1)
# do something ;; value2) # do something else ;; *)
# default case ;; esac # case 语句用于多分支条件判断。
# ;; 表示结束一个 case 分支。
# * 表示默认分支当没有匹配到任何 case 时执行。
示例
dayMonday case $day in Monday)
echo Today is Monday ;; Tuesday)
echo Today is Tuesday ;; *)
echo Its some other day ;; esac
5. 函数
定义函数
function_name() { # function body }
# 使用 function_name() 定义函数。
示例
greet() { echo Hello, World! } greet
带参数的函数
function_name() { local arg1$1 local arg2$2 echo Argument 1: $arg1 echo Argument 2: $arg2 } function_name first second
# 通过 $1, $2 等访问函数参数。
# 使用 local 关键字定义局部变量。
示例
add() { local num1$1 local
num2$2 local sum$((num1 num2))
echo Sum: $sum } add 5 10
返回值
function_name()
{ echo return value }
result$(function_name)
echo $result
# 使用 echo 输出返回值并通过命令替换捕获返回值。
示例
get_greeting()
{ echo Hello, User! }
greeting$(get_greeting)
echo $greeting
6. 数组
定义数组
array(value1 value2 value3)
# 使用 () 定义数组。
示例
fruits(apple banana cherry)
访问数组元素
echo ${array[0]}
# 使用 ${array[index]} 访问数组元素。
示例
echo ${fruits[1]}
# 输出 banana
遍历数组
for element in ${array[]};
do echo $element done
# 使用 ${array[]} 遍历数组中的所有元素。
示例
for fruit in ${fruits[]};
do echo Fruit: $fruit done
获取数组长度
echo ${#array[]}
# 使用 ${#array[]} 获取数组的长度。
示例
echo Number of fruits: ${#fruits[]}
添加元素到数组
array(new_value)
# 使用 添加元素到数组末尾。
示例
fruits(orange)
echo Updated fruits: ${fruits[]}
7. 字符串操作
字符串长度
strhello echo ${#str}
# 使用 ${#str} 获取字符串的长度。
示例
greetingHello, World!
echo Length of greeting: ${#greeting}
字符串截取
strhello world echo ${str:0:5}
# 输出 hello
# 使用 ${str:start:length} 截取字符串的一部分。
示例
substring${greeting:0:5}
echo Substring: $substring
字符串替换
strhello world
echo ${str//world/universe}
# 输出 hello universe
# 使用 ${str//old/new} 替换字符串中的所有匹配项。
示例
new_greeting${greeting/world/universe}
echo New greeting: $new_greeting
字符串拼接
str1hello str2world
echo $str1 $str2
# 使用空格或变量拼接字符串。
示例
full_greeting$greeting, welcome!
echo Full greeting: $full_greeting
8. 文件和目录操作
检查文件是否存在
if [ -f file.txt ]; then echo File exists fi
# 使用 [ -f file.txt ] 检查文件是否存在。
示例
if [ -f example.txt ]; then echo example.txt exists
else echo example.txt does not exist fi
创建目录
mkdir directory_name
# 使用 mkdir 创建目录。
示例
mkdir new_folder
echo Directory created: new_folder
删除文件或目录
rm file.txt
# 使用 rm 删除文件。
rm -r directory_name
# 使用 rm -r 删除目录及其内容。
示例
rm old_file.txt
echo File removed: old_file.txt
rm -r old_folder
echo Directory removed: old_folder
复制文件
cp source_file destination_file
# 使用 cp 复制文件。
示例
cp original.txt copy.txt
echo File copied: original.txt to copy.txt
移动文件
mv source_file destination_file
# 使用 mv 移动文件或重命名文件。
示例
mv old_name.txt new_name.txt
echo File renamed: old_name.txt to new_name.txt
查找文件
find /path -name file-name
# 使用 find 查找指定路径下的文件。
示例
find . -name *.txt echo All .txt files in the current directory:
统计行数
wc -l file.txt
# 使用 wc -l 统计文件的行数。
示例
line_count$(wc -l example.txt)
echo Line count in example.txt: $line_count
查看文件内容
cat file.txt
# 使用 cat 查看文件内容。
示例
cat example.txt
echo Content of example.txt:
显示前几行
head -n 5 file.txt
# 使用 head -n 5 显示文件的前 5 行。
示例
head -n 5 example.txt echo First 5 lines of example.txt:
显示后几行
tail -n 5 file.txt
# 使用 tail -n 5 显示文件的后 5 行。
示例
tail -n 5 example.txt echo Last 5 lines of example.txt:
搜索文件内容
grep string file.txt
# 使用 grep 搜索文件中的字符串。
示例
grep hello example.txt
echo Lines containing hello in example.txt:
排序
sort file.txt
# 使用 sort 对文件内容进行排序。
示例
sort example.txt
cho Sorted content of example.txt:
去重
uniq file.txt
# 使用 uniq 去除文件中的重复行。
示例
uniq example.txt
echo Unique lines in example.txt:
9. 常用命令
查找文件
find /path -name file-name
# 使用 find 查找指定路径下的文件。
示例
find /home/user -name *.log echo All .log files in /home/user:
统计行数
wc -l file.txt
# 使用 wc -l 统计文件的行数。
示例
wc -l example.txt
echo Line count in example.txt:
查看文件内容
cat file.txt
# 使用 cat 查看文件内容。
示例
cat example.txt
echo Content of example.txt:
显示前几行
head -n 5 file.txt
# 使用 head -n 5 显示文件的前 5 行。
示例
head -n 5 example.txt
echo First 5 lines of example.txt:
显示后几行
tail -n 5 file.txt
# 使用 tail -n 5 显示文件的后 5 行。
示例
tail -n 5 example.txt
echo Last 5 lines of example.txt:
搜索文件内容
grep string file.txt
# 使用 grep 搜索文件中的字符串。
示例
grep hello example.txt
echo Lines containing hello in example.txt:
排序
sort file.txt
# 使用 sort 对文件内容进行排序。
示例
sort example.txt
echo Sorted content of example.txt:
去重
uniq file.txt
# 使用 uniq 去除文件中的重复行。
示例
uniq example.txt
echo Unique lines in example.txt:
10. 错误处理
捕获命令退出状态
command || echo Command failed
# 如果 command 失败则执行 echo Command failed。
示例
ls /nonexistent_directory || echo Directory does not exist
try-catch 类似结构
{ command } || { echo Error occurred }
# 使用 {} 将命令块分组并在失败时执行错误处理。
示例
{ ls /nonexistent_directory } || { echo Error: Directory does not exist }
使用 set -e
set -e # 脚本代码
# set -e 使脚本在遇到错误时立即退出。
示例
set -e ls /nonexistent_directory echo This line will not be executed if the previous command fails
使用 set -u
set -u # 脚本代码
# set -u 使脚本在使用未定义的变量时立即退出。
示例
set -u echo $undefined_variable echo This line will not be executed if the previous command fails
11. 调试
打印调试信息
set -x
# 脚本代码 set x # set -x 开启调试模式显示每条命令及其参数。
# set x 关闭调试模式。
示例
set -x echo Starting script ls /home/user echo Script completed set x
使用 -e 选项
set -e # 脚本代码
# set -e 使脚本在遇到错误时立即退出。
示例
set -e ls /nonexistent_directory echo This line will not be executed if the previous command fails
12. 示例脚本
简单备份脚本
#!/bin/bash
# Shebang 行指定了脚本使用的解释器。# 定义源目录和备份目录
SOURCE_DIR/path/to/source
BACKUP_DIR/path/to/backup# 创建备份目录如果不存在
if [ ! -d $BACKUP_DIR ]; thenmkdir -p $BACKUP_DIRecho Backup directory created: $BACKUP_DIR
fi# 复制文件到备份目录
rsync -av --delete $SOURCE_DIR/ $BACKUP_DIR/
echo Files copied to backup directory: $BACKUP_DIRecho Backup completed successfully.
用户交互脚本
#!/bin/bash
# Shebang 行指定了脚本使用的解释器。# 提示用户输入
read -p Enter your name: name
read -p Enter your age: age# 输出用户信息
echo Hello, $name! You are $age years old.# 判断年龄是否为成年人
if [ $age -ge 18 ]; thenecho You are an adult.
elseecho You are a minor.
fi
文件查找和统计
#!/bin/bash
# Shebang 行指定了脚本使用的解释器。# 查找当前目录下所有txt文件并统计行数
find . -name *.txt | xargs wc -l
echo Line count of all .txt files in the current directory.