shell中常见参数及判断命令

本文详细介绍了Shell脚本中常用的特殊变量及其用途,如$0表示当前脚本的文件名,$*与$@的区别等,并解释了如何使用这些变量进行条件判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Shell常用特殊变量

经常会在shell命令中,看到$0, $#, $*, $@, $?, $$这样的取值,这些代表什么呢?

变量含义
$0当前脚本的文件名
$n传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2
$#传递给脚本或函数的参数个数
$*传递给脚本或函数的所有参数
$@传递给脚本或函数的所有参数。被双引号(” “)包含时,与 $* 稍有不同
$?上个命令的退出状态,或函数的返回值。成功返回0,失败返回1
$$当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID

$*$@ 都是将参数一个一个返回
"$*"将所有参数当做一个整体字符串返回 , "$@"将参数一个一个返回

常用判断参数

在shell命令文件中还经常会看到类似与if [ -z "${SPARK_HOME}" ]; then这样的判断语句?是不是也和我一样很疑惑-z是什么含义?
下面是几个常见的参数,供查询使用:

-a file exists. 
-b file exists and is a block special file. 
-c file exists and is a character special file. 
-d file exists and is a directory. 
-e file exists (just the same as -a). 
-f file exists and is a regular file. 
-g file exists and has its setgid(2) bit set. 
-G file exists and has the same group ID as this process. 
-k file exists and has its sticky bit set. 
-L file exists and is a symbolic link. 
-n string length is not zero. 
-o Named option is set on. 
-O file exists and is owned by the user ID of this process. 
-p file exists and is a first in, first out (FIFO) special file or named pipe. 
-r file exists and is readable by the current process. 
-s file exists and has a size greater than zero. 
-S file exists and is a socket. 
-t file descriptor number fildes is open and associated with a terminal device. 
-u file exists and has its setuid(2) bit set. 
-w file exists and is writable by the current process. 
-x file exists and is executable by the current process. 
-z string length is zero. 

判断命令

shell中除了有上边这样用来判断文件是否存在的参数,当然还有判断两个数是否相等这样更常规的命令
例如,if [ $# -gt 0 ]这样判断传入参数个数是否为0

命令含义
-eq等于
-ne不等于
-gt大于
-lt小于
ge大于等于
le小于等于
### Shell 脚本常用命令总结 #### Shebang 行解释 Shell脚本通常以`#!/bin/bash`作为首行,这被称为释伴(shebang)行。此行中的`#`符号被称作hash,而`!`则称为bang。该行指示脚本应由位于 `/bin/bash` 的程序来解析执行[^1]。 #### 文件操作命令 - `touch`: 创建新文件或者更新已有文件的时间戳。 - `mkdir`: 创建新的目录结构;可以使用 `-p` 参数创建多级嵌套目录。 - `rm`: 删除文件或空目录;对于非空目录需附加参数如 `-r` 或 `-rf` 强制删除。 #### 文本处理工具 - `sed`: 流编辑器用于查找替换文本模式,支持正则表达式匹配。 - `awk`: 复杂的数据提取和报告工具,适合于表格数据的操作。 - `grep`: 在文件中搜索特定字符串或模式,并显示含有这些模式的行。 #### 用户权限管理 - `chown`: 更改文件的所有权给指定用户及其所属群组[^5]。 - `chmod`: 修改文件访问权限位设置读写执属性。 #### 自动化流程控制语句 - 使用条件判断与循环结构实现复杂逻辑: ```bash for i in $(seq 1 10); do echo $i; done if [ "$var" == "value" ]; then echo matched; fi while true; do sleep 1; done ``` #### 并发任务调度 为了提高效率,在某些情况下可能希望并发运行多个子进程并收集它们的结果。可以通过后台启动方式加上等待机制完成这一目标[^2]: ```bash task1 & pid1=$! task2 & pid2=$! wait $pid1 && wait $pid2 || { echo "One of the tasks failed"; exit 1; } ``` ### 面试题汇总 针对上述知识点,以下是几个常见的面试问题: 1. 解释什么是 shebang 行以及它的重要性? 2. 描述如何利用 shell 命令批量生成固定数量的新文件? 3. 当需要更改某个文件夹内所有文件的属主时应该怎么做? 4. 如果想让两个独立的任务同时开始工作直到两者都完成后继续下一步该如何设计?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值