shell脚本基础知识
2021/11/25 7:14:08
本文主要是介绍shell脚本基础知识,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.常见的shell内置变量有哪些?
变 量 | 含义 |
---|---|
$0 |
脚本名字 |
$1 |
位置参数 #1 |
$2 - $9 |
位置参数 #2 - #9 |
${10} |
位置参数 #10 |
$# |
位置参数的个数 |
"$*" |
所有的位置参数(作为单个字符串) (必须被引用起来, 否则默认为"$@ ") |
"$@" |
所有的位置参数(每个都作为独立的字符串) |
${#*} |
传递到脚本中的命令行参数的个数 |
${#@} |
传递到脚本中的命令行参数的个数 |
$? |
上一条命令返回值(0表示成功,可以echo输出查看) |
$$ |
脚本运行的当前进程ID(PID) |
$- |
传递到脚本中的标志(使用set) |
$_ |
之前命令的最后一个参数 |
$! |
运行在后台的最后一个作业的进程ID(PID) |
2.如何向脚本传递并使用参数 ?
./script argument1 argument2 argument3
在脚本中,$1引用第一个参数,$2引用第二个参数,依次类推;
$#可以计算向脚本传递的参数个数;
$*和$@都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数;
"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@"和$@输出结果一致
脚本test.sh内容如下
#!/bin/bash echo '$*输出如下:' for var in $* do echo "$var" done echo '"$*"输出如下:' for var in "$*" do echo "$var" done echo '$@输出如下:' for var in $@ do echo "$var" done echo '"$@"输出如下:' for var in "$@" do echo "$var" done
传递参数执行: ./test.sh va1 va2 va3 ,输出结果如下:
$*输出如下: va1 va2 va3 va4 "$*"输出如下: va1 va2 va3 va4 $@输出如下: va1 va2 va3 va4 "$@"输出如下: va1 va2 va3 va4
3.文件类型的测试操作有哪些?
操作 | 测试条件 | 操作 | 测试条件 |
---|---|---|---|
-e |
文件是否存在 | -s |
文件大小不为0 |
-f |
是一个标准文件 | ||
-d |
是一个目录 | -r |
文件具有读权限 |
-h |
文件是一个符号链接 | -w |
文件具有写权限 |
-L |
文件是一个符号链接 | -x |
文件具有执行权限 |
-b |
文件是一个块设备 | ||
-c |
文件是一个字符设备 | -g |
设置了sgid标记 |
-p |
文件是一个管道 | -u |
设置了suid标记 |
-S |
文件是一个socket | -k |
设置了"粘贴位" |
-t |
文件与一个终端相关联 | ||
-N |
从这个文件最后一次被读取之后, 它被修改过 | F1 -nt F2 |
文件F1比文件F2新 * |
-O |
这个文件的宿主是你 | F1 -ot F2 |
文件F1比文件F2旧 * |
-G |
文件的组id与你所属的组相同 | F1 -ef F2 |
文件F1和文件F2都是同一个文件的硬链接 * |
! |
"非" (反转上边的测试结果) |
4.如何获取一个文件指定行列(第x行第y列)的内容?
awk 'NR=x{print $y}' filename
更多awk相关可以参考awk命令入门 - 博客园 (cnblogs.com)
这篇关于shell脚本基础知识的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南
- 2024-09-30Dnd-Kit学习:新手快速入门指南