shell 各种符号的含义和用法

第一: 符号汇总

符号 含义
[] 逻辑判断
() 命令执行(类似于``)
{} 变量解释
(()) 计算(类似于expr)
[[]] 用于条件判断

第二: 使用说明

2.1 []的使用

# 判断 test.bed文件是否存在
# 终端写法
# if [ -f test.bed ];then echo "test.bed exists";else echo "test.bed not exists";fi
# shell 脚本写法
if [ -f test.bed ];then 
    echo "test.bed exists"
else 
    echo "test.bed not exists"
fi

2.2 ()的使用

使用$(commond)的形式可以在命令行总执行命令并将输出结果替换到当前位置;

echo $(basename ~/test/linux/20241009/test.txt)
# test.txt
infile_name=$(basename ~/test/linux/20241009/test.txt)
echo ${infile_name}
# test.txt

圆括号()主要用于创建子shell。‌ 圆括号内的命令会在一个子shell中顺序执行,这意味着在子shell中定义的变量不会影响到父shell中的变量‌;
即,圆括号用于将多个命令组合在一起执行。这些命令会在一个新开的子shell中顺序执行,任何在圆括号中定义的变量都仅在该子shell中有效,不会影响到父shell中的变量‌;

i=1;(let i+=5;echo $i); echo $i
# 6
# 1

2.3 {}的使用

2.3.1 扩展作用

对{}中的逗号分割的文件列表进行拓展;

echo {
   
   a,b}.txt
# 结果为 a.txt b.txt

对{}中的点点(…)分割的顺序列表进行拓展;

echo {
   
   1..5}
# 结果为 1 2 3 4 5
echo {
   
   a..e}
# 结果为 a b c d e

2.3.2 命令分组(类似于匿名函数)

{}用来将一系列命令组合在一起执行,这些命令会在当前shell环境中运行,而不是开启一个新的子shell(如:{commond1; commond2;commond3;}),且变量在当前shell环境中保持;
注意事项:

  1. 第一个命令和左边的{之间必须有一个
<think>好的,用户想了解Shell中不同符号,尤其是$符号以及其他特殊字符的作用。我需要根据用户提供的引用来组织回答,确保正确引用并符合格式要求。首先,我要整理各个引用的内容,特别是关于$符号的部分。引用2提到$在脚本中有多种用法,比如参数传递。引用3列举了特殊变量如$0、$n、$#等,还有${}的用法。引用4提到了逻辑非!文件判断表达式。引用1则区分了普通字符元字符,其中$属于元字符,有特殊含义。 接下来,我需要按照用户的要求,将回答结构化,分点解释每个符号的作用。可能需要分为基础符号、高级用法、组合符号等部分。每个符号下要给出定义、示例引用来源。例如,$变量替换时,要提到$var${var}的区别,并引用对应的资料。同时要注意使用中文,行内公式用$...$,独立公式用$$...$$,但这里可能用不上数学公式,主要是Shell符号的说明。 还要注意生成相关问题,根据用户提供的示例,可能需要问及如何转义特殊字符、$符号的高级应用等。最后检查引用是否正确标注在对应的位置,比如在解释$?时引用3,在提到逻辑非时引用4。确保每个部分清晰,帮助用户逐步理解Shell中的符号含义。</think>### Shell符号$及其他特殊字符详解 #### 一、基础符号含义 1. **$符号(变量替换)** - `$var`:获取变量`var`的值,例如`echo $PATH`输出环境变量[^3] - `${var}`:避免变量名歧义,例如`${file}_name`[^3] - `$0`:当前脚本名称;`$1-$9`:脚本的第1到第9个参数 - `$#`:脚本参数个数;`$@`或`$*`:所有参数列表 - `$?`:上一条命令的退出状态(0表示成功)[^3] - `$$`:当前进程的PID 2. **其他关键符号** - `!`:逻辑非,例如`if [ ! -f file.txt ]`判断文件不存在[^4] - `>`:输出重定向(覆盖),如`echo "test" > file.txt` - `>>`:输出重定向(追加) - `|`:管道符,将前一个命令的输出作为后一个命令的输入 #### 二、高级符号用法 1. **数学运算符号** - `$(( ))`:执行算术运算,例如`sum=$((3+5))`[^3] - `$[]`:旧版算术运算(建议使用`$(( ))`替代) 2. **字符串与条件判断** - `[[ ]]`:增强型条件判断,支持正则匹配(如`[[ $str =~ ^[0-9]+$ ]]`) - `<<`:Here Document,用于输入多行文本,例如: ```bash cat << EOF Hello, $USER! EOF ``` 3. **特殊组合符号** - `$()`:命令替换,将命令输出赋值给变量,如`date=$(date +%F)`[^2] - `$(())`:见数学运算 - `\`:转义字符,例如`echo \$PATH`输出`$PATH`而非变量值[^1] #### 三、符号分类(普通字符 vs. 元字符) - **普通字符**:纯文本无特殊意义,如字母、数字(除特殊符号外)[^1] - **元字符**:Shell保留字符,如`$`、`!`、`>`、`|`等,用于控制脚本逻辑 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值