当前位置: 首页 > article >正文

linux进阶

目录

变量

shell变量

环境变量

预定义变量

位置变量

其他

管道与重定向

管道

重定向

shell脚本

分支结构

循环结构

 数组

脚本实例


变量

shell变量

shell变量:shell程序在内存中存储数据的容器

shell变量的设置:color=red

将命令的结果赋值给shell变量

  • 变量名=$(命令)  
  • 变量名=`命令`  

shell变量的引用echo $color,echo ${color}

环境变量

env/export命令查看环境变量

export <变量名>:命令用于设置环境变量,使得这些变量可以在当前 shell 以及由这个 shell 启动的子 shell 和进程中被访问。

系统环境变量

/etc/profile、/etc/profile.d/*.sh、/etc/bashrc

PS1:存储命令行提示符

PS2:存储命令行换行符

PATH变量:存储系统命令所在的路径 

PATH变量的设置:PATH=/home/bin:$PATH

用户自定义环境变量

~/.bash_profile、~/.bashrc

预定义变量

用来存储shell程序运行过程中的状态信息,$$进程号,$0进程名或者程序名称,$?上一个命令的返回值信息,$!最后一个后台进程的进程号

位置变量

$1,shift

$# 总共有几个参数

$*对应的是所有位置的参数值

管道与重定向

标准设备文件文件目录文件描述符
标准输入/dev/stdin0
标准输出/dev/stdout1
标准错误/dev/stderr2

管道

管道是命令间传递信息的设备,将前一个命令程序的输出传递给后一命令

|grep -v 表示反向筛选

标准错误不能通过管道传递,意味着标准错误信息不会被筛选

重定向

重定向是指将设备文件的信息保存到磁盘中

标准输出重定向:>覆盖 >>追加 或者 1>,1>>

标准出错重定向:2>覆盖,2>>追加

标准输入重定向:<

标准输入重定向之here document:eg:cat <<EOF

合并输出重定向:&>、&>>

shell脚本

./test.sh 真实执行,要求有权限

bash test.sh bash解释器直接运行

sh test.sh sh是bash的别名命令,可以加一些参数

. test.sh 当前shell执行test.sh文件内的命令

source test.sh source等效于.

分支结构

&& 前面的命令执行成功才会执行后面的命令

|| 前面的命令执行失败才会执行后面的命令

!对测试预计取反,注意要写在整个测试语句的前面

简单示例

#! /bin/bash

test -x testaaa.sh && echo "OK" || echo "fail"

&&多条件示例

#! /bin/bash

count=0
while [ -x $1 ] && [ $count -le 5 ]
 do
  echo 'running'
  let count++
done 

if else

#! /bin/bash

if [ -x $1 ]
then
 echo "Ok"
elif [ -x $2 ];then
 echo "$2 is executable"
else
 echo "fail"
fi

case

#! /bin/bash

VALUE=$1
case $VALUE in
 a)
  echo "A";;
 b)
  echo "B";;
 *)
  echo "C";;
esac

循环结构

while

#! /bin/bash

count=0
while [ -x $1 ]
 do
  [ $count -ge 5 ] && break
  echo "Running"
  let count++
done 

until

#! /bin/bash

count=0
until [ -x $1 ]
 do
  [ $count -ge 5 ] && break
  echo "Running"
  let count++
done

for in

#! /bin/bash

for item in aa bb cc dd
 do
  echo $item
done

 数组

定义数组

myarr=(1 2 3)

myarr=("abc" "edf" "sss")

获取数组长度

${#myarr[*]}或${#myarr[@]}均可

读取某个下标的值

myarr_index2=${myarr[2]}

输出整个数组

echo ${myarr[*]}

脚本实例

输入一个整数,从这个整数开始,输出可以被3整除的数

#! /bin/bash

read -p "please input number" startNum
count=0
while [ $count -lt 10 ]
do
 let Num2=$startNum%3
 if [ $Num2 -eq 0 ]
  then
   echo $startNum
   let count++
 fi
 let startNum++
done

$(cd "$(dirname $0)" && pwd) 获取当前执行文件的路径

dirname: 获取指定路径所在的目录 ,如 dirname /home/xu 结果为 /home

Linux:-e、-d、-f、-L、-r、-w、-x、-s、-h、 - 木东木容 - 博客园-e filename 如果 filename存在,则为真 -d filename 如果 filename为目录,则为真 -f filename 如果 filename为常规文件,则为真 -L filicon-default.png?t=O83Ahttps://www.cnblogs.com/xwb583312435/p/9012946.html


http://www.kler.cn/a/464373.html

相关文章:

  • ARM 汇编基础总结
  • STM32-笔记32-ESP8266作为服务端
  • HTML——28.音频的引入
  • 实战设计模式之建造者模式
  • 聆听音乐 1.5.9 | 畅听全网音乐,支持无损音质下载
  • Flutter-插件 scroll-to-index 实现 listView 滚动到指定索引位置
  • Kafka优势剖析-分布式架构
  • 迅为RK3568开发板编译Android12源码包-设置屏幕配置
  • [人工智能] 结合最新技术:Transformer、CLIP与边缘计算在提高人脸识别准确率中的应用
  • halcon中的BLOB与灰度直方图的分析与理解
  • 华为iotda sdk发送消息无法更新quickstartpython问题解决
  • 丢弃法hhhh
  • python中subprocess指定用户与传递环境变量
  • 【重庆】《政务数字化应用费用测算规范》(T/CDCIDA 001—2023)-省市费用标准解读系列36
  • 单片机的存储器类型
  • DC-DC 降压转换器设计提示和技巧
  • Echart实现3D饼图示例
  • 【DSP/matlab】fftshift 是什么意思?在信号处理中有什么作用?
  • C#编写的盘符图标修改器 - 开源研究系列文章
  • STM32CUBEIDE FreeRTOS操作教程(十二):std dynamic memory 标准动态内存
  • 电子应用设计方案82:智能 AI 椅子系统设计
  • 软件工程期末复习汇总
  • 小程序组件 —— 24 组件案例 - 绘制公司信息区域
  • 矩阵简单问题(Java)
  • python小项目:给复制出来的段落前添加星号
  • UML统一建模语言测试题汇总