欢迎光临散文网 会员登陆 & 注册

shell编程简述

2023-04-16 16:21 作者:芜湖小量化  | 我要投稿

具体shell命令详见linux系统入门文集 此处仅介绍部分运维操作

shell 既是一个解释器也是一种编程语言
Shell 是一个用C语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言

变量           作用域               声明方式                 规范
自定义变量      当前shell            =                      字符串 整型 浮点型 日期型
环境变量        当前shell和子shell   export declare - x
系统环境变量     所有shell

$0     当前shell名称/脚本名称
$#     传入脚本的参数数量
$*     传入脚本的所有参数
$?     上条命令执行的状态码
$PS1   命令提示符
$HOME  用户主文件夹
$PATH  全局命令的搜索路径PATH=$PATH:[新增路径]

echo $HOME
<!--/root-->

echo $PS1
<!--\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$-->
尝试修改原来的样式 例如更偏好蓝色箭头+字体
vim  ~/.bashrc
<!--\033[01;34m\] 设置颜色字体-->
修改为 PS1='${debian_chroot:+($debian_chroot)}\033[01;32m\]\u@\h:\033[01;34m\]\w-->'

重定向 fd0 标准输入 fd1 标准输出 fd2 标准错误  >>追加写入

cd test_file
<!--把终端输出结果和标准错误写入list.txt-->
ls -l >> list.txt 2>&1


<!--shell编程里面的函数-->
function 函数名()
{
函数语句
<!--return返回值(可选)-->
return
}
<!--注意:-->
<!--shell自上而下执行,函数必须在使用前定义-->
<!--函数获取变量和shellscript类似,$0代表函数名,后续参数通过$1、$2...获取-->
<!--函数内return仅仅表示函数执行状态,不代表函数执行结果-->
<!--返回结果一般使用echo、printf,在外面使用$()、``获取结果-->
<!--如果没有return,函数状态是上一条命令的执行状态,存储在$?中-->
<!--shell编程中等号两端不要留空格-->

模块化 source 命令

<!--add.sh-->
#!/bin/bash
function add(){
   declare -i res_1=$1
   declare -i res_2=$2   # 声明是一个整型
   res=$(($res_1+$res_2))
   echo $res
}

<!--exc.sh-->
#!/bin/bash
source './add.sh'
total=$(add 1 2)
echo $total

<!--转化为可执行文件-->
chmod +x ./exc.sh
./exc.sh


shell 展开
1.大括号展开
# 字符串序列
a{b,c,d}e => abe ace ade
# 表达式序列
{1..5} => 1,2,3,4,5
{1..5..2} => 1,3,5   # 以步长为2展开
{a..e} => a b c d e

2.波浪号展开
命令行字符串的第一个字符为波浪号(~)则执行
~ => $HOME

3.参数展开
<!--间接参数扩展${!parameter},其中引用的参数并不是parameter而是parameter的实际的值-->
parameter="var"
var="shell"
echo ${!parameter}   parameter(通过!)-->var(通过${})-->shell
<!--参数长度${#parameter}-->
parameter=cd
echo ${#parameter}  # 获得参数的长度 打印2
<!--空参数处理-->
<!--${parameter:-word}#为空替换-->
<!--${parameter:=word}#为空替换,并将值赋给$parameter变量-->
<!--${parameter:?word}#为空报错-->
<!--${parameter:+word}#不为空替换-->
a=1
echo ${a:-word}    # 不为空不替换
echo ${b:=word}    # b为空 此时把word赋值给b
echo ${b:?word}    # b为空  报错
echo ${a:+word}    # a不为空 a被替换成word

<!--参数切片${parameter:offset}${parameter:offset:length}-->

<!--参数部分删除-->
<!--${parameter%word}#最小限度从后面截取word-->
<!--${parameter%%word}#最大限度从后面截取word-->
<!--${parameter#word}#最小限度从前面截取word-->
<!--${parameter##word}#最大限度从前面截取word${var}-->

4.命令行替换
# `data`命令用户获得当前时间  `command`完成命令的替换
# Shell 中有两种方式可以完成命令替换,一种是反引号` `,一种是$()

#!/bin/bash

begin_time=`date`    #开始时间,使用``替换
sleep 20s            #休眠20秒
finish_time=$(date)  #结束时间,使用$()替换

echo "Begin time: $begin_time"
echo "Finish time: $finish_time"

5.数字计算
echo $(()) 来包裹数学运算

6.文件名展开
echo 正则匹配

shell编程简述的评论 (共 条)

分享到微博请遵守国家法律