qidao123.com技术社区-IT企服评测·应用市场

标题: linux shell 脚本语言教程(超详细!) [打印本页]

作者: 傲渊山岳    时间: 2024-11-6 19:27
标题: linux shell 脚本语言教程(超详细!)

Shell 编程详细指南

什么是 Shell?

Shell 是用户与操作体系内核之间的接口,答应用户通过下令行输入来控制操作体系。它充当下令解释器,读取用户输入的下令并实行相应的操作。Shell 提供了强盛的脚本编程能力,可以自动化许多使命。常见的 Shell 有 Bash(Bourne Again Shell)、Zsh(Z Shell)、Ksh(Korn Shell)等。
什么是 Shell 脚本?

Shell 脚本是一种编程语言脚本,用于在 Unix/Linux 操作体系上实行下令。它是一系列下令的聚集,通常保存在一个文件中,可以通过运行脚本文件来实行这些下令。
1. 解释

单行解释

在 Shell 脚本中,解释是通过 # 字符来实现的。任何在 # 后面的内容都会被忽略,不会被实行。
  1. # 这是一个单行注释
  2. # echo "Hello, World!"
复制代码
文章下面讲的是shell是Bash的语法, 全部语法可以直接在终端使用, 也可以写在一个 .bash 或 .sh 的文件中, 然后通过 ./filename 来实行。(要想实行, 需要给文件可实行的权限, 下面会讲到)
文件开头先写上下面内容,
  1. #!/bin/bash
复制代码
#!/bin/bash
是一种称为 “shebang” 或 “hashbang” 的特殊解释,用于指定脚本的解释器。
作用

2. 变量

变量定义与使用
在 Shell 中,变量的定义不需要使用数据范例。可以直接用 = 号赋值,不要在 = 号双方加空格。变量的值可以通过 $ 符号来引用。
  1. my_var="Hello, World!"
  2. echo $my_var
复制代码
变量命名规则

变量范例
  1. name="John Doe"
  2. echo "Hello, $name"
复制代码
  1. number=42
  2. echo "The number is $number"
复制代码
数组

数组赋值
  1. arr=(value1 value2 value3)
复制代码
读取数组元素
  1. echo ${arr[1]}
复制代码
变量操作

变量更换
变量更换是指将变量的值插入到字符串中。
  1. echo "My name is ${name}."
复制代码
只读变量
定义只读变量后,其值不能被修改。
  1. readonly val="value"
  2. val="new_value" # 这将会报错
复制代码
3. 环境变量

环境变量是可以在整个体系中使用的变量。它们通常在 Shell 会话开始时定义,可以影响体系的行为和操作。常见的环境变量有 PATH、HOME、USER 等。
定义和导出环境变量

使用 export 下令可以将变量设置为环境变量。
  1. export MY_ENV_VAR="value"
复制代码
检察环境变量

使用 printenv 或 env 下令可以检察当前全部环境变量。
  1. printenv
  2. env
复制代码
4. 常用 Shell 变量


5. 输入输出

read 下令

read 下令用于从标准输入读取一行输入,并将其分配给一个或多个变量。
基本用法

  1. echo "Enter your name:"
  2. read name
  3. echo "Hello, $name!"
复制代码
使用选项


  1. read -p "Enter your username: " username
  2. read -s -p "Enter your password: " password
  3. echo
  4. echo "Username: $username"
复制代码
echo 下令

echo 下令用于输出字符串到标准输出。
基本用法

  1. echo "Hello, World!"
复制代码
使用选项


  1. echo -n "Hello, "
  2. echo "World!"
  3. echo -e "Line1\nLine2\nLine3"
复制代码
printf 下令

printf 下令用于格式化输出,雷同于 C 语言中的 printf 函数。
  1. printf "Hello, %s!\n" "World"
复制代码
常见格式说明符


  1. name="John"
  2. age=25
  3. printf "Name: %s, Age: %d\n" "$name" "$age"
复制代码
6. 条件判定

判定语句

if 语句

  1. if [ condition ]; then
  2.   # statements
  3. elif [ condition ]; then
  4.   # statements
  5. else
  6.   # statements
  7. fi
复制代码
样例:
  1. #!/bin/bash
  2. number=5# gt lt 分别是 > 和 <if [ $number -gt 0 ]; then  echo "The number is positive."elif [ $number -lt 0 ]; then  echo "The number is negative."else  echo "The number is zero."fi
复制代码
case 语句

  1. case "$variable" in
  2.   pattern1)
  3.     # statements
  4.     ;;
  5.   pattern2)
  6.     # statements
  7.     ;;
  8.   *)
  9.     # default statements
  10.     ;;
  11. esac
复制代码
样例:
  1. #!/bin/bash
  2. echo "Enter a single character (a-g):"read charcase "$char" in  a)    echo "Monday"    ;;  b)    echo "Tuesday"    ;;  c)    echo "Wednesday"    ;;  d)    echo "Thursday"    ;;  e)    echo "Friday"    ;;  f)    echo "Saturday"    ;;  g)    echo "Sunday"    ;;  *)    echo "Invalid input"    ;;esac
复制代码
test 下令

test 下令用于条件判定,常与逻辑运算符结合使用。
文件测试


  1. if test -e /etc/passwd; then
  2.   echo "/etc/passwd exists."
  3. fi
复制代码
字符串测试


  1. if test -z "$name"; then
  2.   echo "Name is empty."
  3. fi
复制代码
数值测试


  1. if test $age -gt 20; then
  2.   echo "Age is greater than 20."
  3. fi
复制代码
7. 循环语句

for 循环

  1. for var in list; do
  2.   # statements
  3. done
复制代码
  1. for i in {1..5}; do
  2.   echo "Number: $i"
  3. done
复制代码
while 循环

  1. while [ condition ]; do
  2.   # statements
  3. done
复制代码
  1. counter=1
  2. while [ $counter -le 5 ]; do
  3.   echo "Counter: $counter"
  4.   counter=$((counter + 1))
  5. done
复制代码
until 循环

  1. until [ condition ]; do
  2.   # statements
  3. done
复制代码
  1. counter=1
  2. until [ $counter -gt 5]; do
  3.   echo "Counter: $counter"
  4.   counter=$((counter + 1))
  5. done
复制代码
8. 函数

Shell 函数用于封装代码块,以便多次调用。
定义函数

  1. function_name() {
  2.   # statements
  3. }
复制代码
  1. greet() {
  2.   echo "Hello, $1!"
  3. }
  4. greet "World"
复制代码
带返回值的函数

  1. add() {
  2.   result=$(( $1 + $2 ))
  3.   return $result
  4. }
  5. add 2 3
  6. echo "Sum: $?"
复制代码
综合示例

  1. #!/bin/bash
  2. # 函数定义print_menu() {  echo "1. Say Hello"  echo "2. Display Date"  echo "3. Exit"}# 主程序while true; do  print_menu  read -p "Enter your choice: " choice  case $choice in    1)      read -p "Enter your name: " name      echo "Hello, $name!"      ;;    2)      current_date=$(date)      echo "Current date and time: $current_date"      ;;    3)      echo "Goodbye!"      break      ;;    *)      echo "Invalid choice, please try again."      ;;  esacdone
复制代码
结论

上述内容涵盖了 Shell 脚本编程中的基础部门,包括输入输出、变量和函数、条件判定和循环等。通过理解和掌握这些内容,你可以编写功能强盛的 Shell 脚原来

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4