欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 【linux】shell编程

【linux】shell编程

2024/10/25 12:17:57 来源:https://blog.csdn.net/m0_74749240/article/details/142425722  浏览:    关键词:【linux】shell编程

一、Shell 编程入门

1. 认识 Shell

Shell 是一个命令行解释器,用于用户与操作系统之间的交互。用户可以通过Shell启动、停止、挂起程序,或编写Shell脚本来自动化任务。

2. Shell 脚本的创建与执行
  • 创建脚本文件,以 #!/bin/bash 开头,指定解释器。
  • 赋予脚本执行权限(chmod +x script.sh)。
  • 执行脚本:./script.sh 或 bash script.sh

二、Shell 变量

1. 系统变量和自定义变量
  • 系统变量:如 $HOME$PWD$USER 等,由系统定义。
  • 自定义变量
    • 定义:variable_name=value
    • 撤销:unset variable_name
    • 静态变量:readonly variable_name=value
    • 输出:$variable_name
2. 变量的基本规则
  • 变量名由字母、数字、下划线组成,不能以数字开头。
  • 等号两边不能有空格。
  • 变量名一般大写。
  • 赋值命令结果给变量:variable=command`` 或 variable=$(command)
3. 设置环境变量
  • export VARNAME=value
  • source config_file 刷新配置
4. 位置参数变量
  • $0:脚本名
  • $1-$9:位置参数
  • $* 和 $@:所有参数,但处理不同
  • $#:参数个数
5. 预定义变量
  • $$:当前进程PID
  • $!:最近一个后台进程PID
  • $?:上一个命令的退出状态

三、运算符

  • $((expression)) 或 $[expression] 或 expr
  • 乘法使用 * 时需转义(\*

四、条件判断

  • 使用 [ condition ],注意空格
  • 逻辑与:&&
  • 逻辑或:||
  • 常用条件判断:
    • 字符串:=
    • 整数:-lt-le-eq-gt-ge-ne
    • 文件:-r-w-x-f-e-d

五、流程控制

1. if 语句
  • 单分支、多分支、嵌套if
2. case 语句
  • 匹配特定值执行相应代码块
3. for 循环
  • 语法1:for var in list; do ... done
  • 语法2:for ((init; cond; iter)); do ... done
4. while 循环
  • while [ condition ]; do ... done

六、read 读取控制台输入

  • read [-p prompt] [-t timeout] variable

示例整理

1. 变量示例
 
#!/bin/bash
A=100
echo "A=$A"
unset A
echo $A # 应为空
readonly B=3
echo $B
2. 运算符示例
 
#!/bin/bash
result=$((2+3)*4)
echo "Result: $result"
3. 条件判断示例
 
#!/bin/bash
if [ "ok" = "ok" ]; then
echo "equal"
fi
if [ 22 -ge 21 ]; then
echo "大于或等于"
fi
if [ -f /root/shell/aaa.txt ]; then
echo "文件存在"
fi
4. 流程控制示例
  • if 语句
 
#!/bin/bash
if [ $1 -ge 60 ]; then
echo "及格"
else
echo "不及格"
fi
  • case 语句
 
#!/bin/bash
case $1 in
1) echo "周一";;
2) echo "周二";;
*) echo "other";;
esac
  • for 循环
 
#!/bin/bash
for i in 1 2 3 4 5; do
echo "Number $i"
done
sum=0
for ((i=1; i<=100; i++)); do
sum=$((sum + i))
done
echo "Sum: $sum"
  • while 循环
 
#!/bin/bash
sum=0
i=1
while [ $i -le 5 ]; do
sum=$((sum + i))
i=$((i + 1))
done
echo "Sum: $sum"
  • read 示例
 
#!/bin/bash
read -p "Enter a number: " num
echo "You entered: $num"

实例(以输出任意数的乘法表为例)

1.touch test2.sh

        创建test2.sh文件夹

2.vim test2.sh

        在vim脚本中编写程序

3.chmod 777 test2.sh(如果不赋权会导致权限不够不能运行)

        “777”三位数分别代表 文件的所有者 文件所在群组的其他用户  除此之外的其他用户

而7代表 rwx 也就是 read write和execute 赋予这三类权限

4../test2.sh

        执行test2.sh文件

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com