shell脚本常见参数

博客展示了shell常用参数的例子及执行结果,为使用shell的用户提供了实际操作参考,有助于了解shell常用参数在实际中的应用情况。

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

参数处理说明
$0脚本名称
$n脚本获取的参数
$#传递到脚本的参数个数
$*以一个单字符串显示所有向脚本传递的参数。如"$*“用「”」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$$脚本运行的当前进程ID号
$!后台运行的最后一个进程的ID号
$@∗相同,但是使用时加引号,并在引号中返回每个参数。如"*相同,但是使用时加引号,并在引号中返回每个参数。如"使"@“用「”」括起来的情况、以"$1" “2"…"2" … "2""n” 的形式输出所有参数。
$-显示Shell使用的当前选项,与set命令功能相同。
$?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

例子

#!/bin/bash
# author:三支烟

echo "Shell 传递参数实例!";
echo "执行的文件名: $0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";
echo "参数个数为:$#";

echo "传递的参数作为一个字符串显示:$*";
echo "此脚本运行的当前进程ID号: $$";
echo "后台运行的最后一个进程的ID号: $!";
echo "显示最后一条命令是否执行成功: $? (0为成功,其他失败)";

执行结果如下:

[root@Openshift41 ~]# sh test.sh 1 2 3 
Shell 传递参数实例!
执行的文件名: test.sh
第一个参数为:1
第二个参数为:2
第三个参数为:3
参数个数为:3
传递的参数作为一个字符串显示:1 2 3
此脚本运行的当前进程ID号: 12745
后台运行的最后一个进程的ID号:  # 因为当前系统中没有后台运行的进程,所以不打印
显示最后一条命令是否执行成功: 0 (0为成功,其他失败)
<think>我们正在回答用户关于Shell脚本常用命令的问题。根据提供的引用内容,我们可以总结一些常用命令和概念,并结合常见Shell脚本知识进行回答。 引用[1]展示了一个在命令结果中循环的例子,使用`for`循环处理`/etc/passwd`文件中的用户名。 引用[2]提到了一些bash的标准变量,如HOME, IFS, SHELL等,以及如何设置它们。 引用[3]则涉及Makefile的基本语法,虽然不直接是Shell命令,但Makefile中会使用Shell命令,并且提到了一些自动化变量和通配符的使用。 用户的问题集中在Shell脚本开发中常用的命令,因此我们将重点放在Shell脚本中经常使用的命令上,而不是Makefile。 常见Shell脚本命令可以分为以下几类: 1. 文件和目录操作:cd, ls, pwd, mkdir, rmdir, cp, mv, rm, touch, chmod, chown等。 2. 文本处理:cat, grep, sed, awk, head, tail, less, more, sort, uniq, cut, tr等。 3. 系统管理:ps, top, kill, free, df, du, ping, ifconfig(或ip), netstat等。 4. 流程控制:if, then, else, fi, case, esac, for, while, until, break, continue等。 5. 变量和参数:变量赋值(如var=value)、使用变量($var或${var})、位置参数($0, $1, $2, ...)、特殊变量($#, $*, $@, $?, $$, $!)等。 6. 输入输出:echo, printf, read, exec, 重定向(>, >>, <, 2>等)和管道(|)。 7. 函数:定义函数(function_name() { ... }),调用函数(function_name arg1 arg2)。 8. 其他常用命令:date, sleep, test(或[ ]),expr, let, wait, trap等。 此外,引用[2]中提到的环境变量也是Shell脚本中非常重要的部分,如PATH, HOME, USER, SHELL, PS1, IFS等。 下面我们按照类别给出一些常用命令的简要说明和示例: 1. 文件和目录操作: - `ls`: 列出目录内容。 ```bash ls -l # 长格式列出 ``` - `cd`: 切换目录。 ```bash cd /path/to/directory ``` - `pwd`: 显示当前工作目录。 ```bash pwd ``` - `mkdir`: 创建目录。 ```bash mkdir new_dir ``` - `cp`: 复制文件或目录。 ```bash cp file1 file2 ``` - `mv`: 移动或重命名文件或目录。 ```bash mv old_name new_name ``` - `rm`: 删除文件或目录。 ```bash rm -r dir # 递归删除目录 ``` - `chmod`: 修改文件权限。 ```bash chmod 755 script.sh ``` 2. 文本处理: - `cat`: 连接文件并打印到标准输出。 ```bash cat file.txt ``` - `grep`: 在文件中搜索匹配的行。 ```bash grep "pattern" file.txt ``` - `sed`: 流编辑器,用于文本替换、删除等。 ```bash sed 's/old/new/g' file.txt # 替换文本 ``` - `awk`: 强大的文本处理工具,常用于处理结构化文本。 ```bash awk '{print $1}' file.txt # 打印每行的第一个字段 ``` 3. 系统管理: - `ps`: 显示当前进程状态。 ```bash ps aux ``` - `kill`: 终止进程。 ```bash kill -9 PID ``` - `df`: 显示磁盘空间使用情况。 ```bash df -h ``` 4. 流程控制: - `if`语句: ```bash if [ $a -gt $b ]; then echo "a is greater than b" fi ``` - `for`循环: ```bash for i in {1..5}; do echo $i done ``` - `while`循环: ```bash while true; do echo "Looping..." sleep 1 done ``` 5. 变量和参数: - 变量赋值和使用: ```bash name="John" echo "Hello, $name" ``` - 位置参数: ```bash # 脚本内 echo "第一个参数: $1" ``` 6. 输入输出: - 重定向: ```bash echo "Hello" > output.txt # 覆盖写入 echo "World" >> output.txt # 追加 ``` - 管道: ```bash cat file.txt | grep "pattern" ``` 7. 函数: ```bash greet() { echo "Hello, $1" } greet "Alice" ``` 8. 其他: - `date`: 显示当前日期时间。 ```bash date "+%Y-%m-%d %H:%M:%S" ``` - `test`或`[ ]`: 条件测试。 ```bash if [ -f "file.txt" ]; then echo "file exists" fi ``` 以上是Shell脚本开发中常用的一些命令和结构。由于Shell脚本的功能非常丰富,这里只列举了部分常用命令。在实际开发中,根据任务需求可能会使用更多特定的命令。 根据用户的问题,我们还可以生成一些相关问题: §§相关问题§§ 1. 如何调试Shell脚本? 2. Shell脚本中如何读取用户输入? 3. 如何编写一个安全的Shell脚本? 4. Shell脚本中如何处理错误(错误处理机制)? 5. 如何编写一个在后台运行的Shell脚本?</think>### Shell脚本开发常用命令详解 Shell脚本开发涉及多种核心命令,以下是常用命令分类及示例: #### 1. **文件和目录操作** - `cd`:切换目录 `cd /path/to/directory` - `ls`:列出目录内容 `ls -l`(长格式显示) - `pwd`:显示当前路径 `echo "当前路径: $(pwd)"` - `mkdir`/`rmdir`:创建/删除目录 `mkdir -p dir/subdir`(递归创建) - `cp`/`mv`/`rm`:复制/移动/删除文件 `rm -rf dir`(强制递归删除)[^1] #### 2. **文本处理** - `cat`:查看文件内容 `cat file.txt` - `grep`:文本搜索 `grep "error" log.txt`(搜索含"error"的行) - `sed`:流编辑器 `sed 's/old/new/g' file.txt`(全局替换) - `awk`:字段处理 ```bash awk -F':' '{print $1}' /etc/passwd # 提取用户名[^1] ``` #### 3. **变量与参数** - **变量赋值**: `name="Alice"` - **特殊变量**: - `$0`:脚本名,`$1`:第一个参数 - `$#`:参数个数,`$?`:上条命令退出状态 ```bash echo "第一个参数: $1" ``` - **环境变量**: `export PATH=$PATH:/custom/bin`(添加路径)[^2] #### 4. **流程控制** - **条件判断**: ```bash if [ -f "file.txt" ]; then echo "文件存在" fi ``` - **循环**: ```bash for u in $(cat users.txt); do # 遍历文件内容 echo "用户: $u" done ``` - **`case`语句**: ```bash case $1 in start) echo "启动服务" ;; stop) echo "停止服务" ;; esac ``` #### 5. **输入输出** - `echo`/`printf`:打印输出 `printf "姓名: %-10s 年龄: %d\n" $name $age` - `read`:读取输入 `read -p "输入姓名: " name` - **重定向**: `command > output.txt 2> error.log`(标准输出/错误分开保存) #### 6. **系统管理** - `ps`:查看进程 `ps aux | grep nginx` - `kill`:终止进程 `kill -9 PID` - `chmod`:修改权限 `chmod +x script.sh`(添加执行权限) - `df`/`du`:磁盘检查 `df -h`(人类可读格式) #### 7. **高级工具** - `find`:文件搜索 `find /home -name "*.log"` - `xargs`:参数传递 `find . -type f | xargs rm`(批量删除) - `curl`/`wget`:网络请求 `curl -O https://example.com/file.zip` ### 示例脚本 ```bash #!/bin/bash # 统计日志文件中的错误数量 log_file="app.log" error_count=$(grep -c "ERROR" $log_file) echo "发现 $error_count 个错误" > error_report.txt ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值