shell基础知识

2025-07-11 02:24:19

shell基础知识

首先查看当前服务器支持的shell类型cat /etc/shells

基本符号

'|'管道符号

'|', 管道符号,通常用于进程间通信

ls | grep a

'$@'参数

$@代表所有的参数

export DEBUG=true

DEBUG()

{

if [ "DEBUG" == "true" ]

then

$@

fi

}

'&&'逻辑与符号

'&&'逻辑与符号使用时,前一个命令才会执行成功后,才会执下一条命令

ls && grep -v a /etc/shells

'&'后台执行符号

'&'符号用于将命令放到后台执行,允许在后台运行一个命令,不会阻塞当前shell

ls & # 在后台运行 sleep 命令

'-'dash符号

'-'后直接加字符,代表选项

if [ -d text ]; then

echo "name"

fi

-d # 文件是否存在,且为目录

-n # 代表是否是非空串

-z # 代表是否是空串

-a # 文件是否存在

-b # 文件是否存在,且为块文件

-c # 文件是否为存在,且为字符文件

'{}'大括号符号

{ echo "Hello"; echo "World"; } > text # 将多个命令组合为一个命令执行

for i in {1..5}; do

echo "name"

done

'' 连接符号

\ # 防止命令跨行,导致不可用

docker run -itd \

--name st \

--network host

''符号

'' # 单引号定义的字符串,都做为字面量处理,字符串内内容不会被解释或展开

算术运算

n1=5

n2=6

n3=$(($n1+$n2)) # 此时返回11,第一个括号会返会5+6,首先发生变量替换,之后第二层括号对其运算并返回

n3=$n1+$n2 # 返回的是5+6

n3=($n1+$n2) # 返回的是5+6

n3=$($n1+$n2) # 此时会显示5+6命令不存在

参数扩展

条件扩展

name=${var:-default} # 如果var为空,则使用默认值,非空为原值,此时=可以替换-

name=${var:-8} # 空,返回8

name=${var:+default} # 空则,返回空字符串;非空,则返回默认值

name=${var:+8} # 非空,返回8

name=${var:?error} # var未设置或为空时,打印error,并退出脚本

替换操作

file="/path/to/example.txt"

echo "${file/\/path\//name}" # 替换"/path/" 为name

echo "${file//\//}" # 替换所有 "/" 为空, “//”为bash参数替换,表示全部替换

echo "${file##*/}" # 提取文件名, ##表示从开头最长的匹配,*匹配任意字符,直到/

#此时为example.txt,为文件名

echo "${file%.*}" # 提取文件路径和基本文件名, %从末尾开始匹配,删除.之后的所有字符

# 此时为/path/to/example.txt

数组操作

array=(123 456, 789, 902,312) # 数组默认使用空格作为分隔符

${array[index]} # 访问单个元素

echo "${array[3]}" # 输出902,312

${array[@]:offset:length} # 提取子数组

echo "${array[@]:0:3}" # 输出为123 456, 789,

${#parameter} # 获取长度

echo "${#array}" # 输出3,获取的是第一个元素的长度

echo "${#array[3]}" # 此时获取到的长度为7

echo "${#array}" # 输出4,数组长度,#表示获取数组长度,[@]表示所有元素, 此时数组长度为4,原因是902,312被视为一个单词

echo "${array[@]}" # 输出为123 456, 789, 902,312,@可以与*互换

echo "${array}" # 输出123

删除子字符串

${parameter#word} # 删除开头的最短匹配

${parameter##word} # 删除开头的最长匹配

${parameter%word} # 删除结尾的最短匹配

${parameter%%word} # 删除结尾的最长匹配

Copyright © 2022 世界杯预选赛欧洲区_世界杯在哪个国家举行 - kd896.com All Rights Reserved.