linux之shell记录
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
shell属于一种很容易学习的程序设计语言依赖于功能强大的命令可以编写提高开发效率的脚本。这里记录一下常用的shell相关的知识点。 持续更新中。。。
1、在linux或mac中查看使用的shell
echo $SHELL
/bin/bash
shell是一种脚本语言就会有解释器来执行这些脚本。
Unix/Linux上常见的Shell脚本解释器有bash、sh、csh、ksh等习惯上把它们称作一种Shell。我们常说有多少种Shell其实说的是Shell脚本解释器。
2、shell脚本调试
在编写好的脚本运行时可能会报错具体会提示哪行有错通过vim进行命令行模式
输入 :set nu 会显示代码行再输入 报错行 + 回车就会定位到报错的行。
:set nu
3、shell执行方式
在linux系统的桌面上创建了一个demo.sh,用来测试 ,sh的权限在移动过程中可能会更改这个要注意下。
#!/bin/bash
echo shell
exit 0
绝对路径和相对路径(./) | /home/tsc/Desktop/demo.sh ./demo.sh (./ 和 sh之间不要用空格) |
sh 和 bash | sh demo.sh bash demo.sh |
source 和 . | . demo.sh(.和sh之间有空格) source demo.sh |
- ./ 、sh和bash三种执行脚本的方式都是重新启动一个子shell在子shell中执行脚本.
source
和.
两种执行方式都是在当前shell进程中执行脚本- 如果脚本最后写了exit 命令用 . 和source执行完成之后会退出终端其它方式不会
4、相关概念
- usr 是 Unix System Resource的缩写
- /usr/bin 文件夹下是系统预装的可执行程序会随着系统升级而改变
- /usr/local/bin目录是给用户放置自己的可执行程序的地方推荐放在这里不会被系统升级而覆盖同名文件。
- 如果两个目录下有相同的可执行程序/usr/local/bin优先于/usr/bin受到PATH环境变量的影响
5、每个shell 最好写上exit
写上exit 主要是为了防止别的shell脚本引用当前的脚本需要判断当前脚本的执行状态
6、脚本参数相关
./para.sh 1 3 ===== 脚本执行 传入两个参数
#!/bin/bash
echo "\$@:$@"
echo "\$0:$0"
echo "\$1:$1"
echo "\$2:$2"
echo "\$#:$#"
echo "==============\$@"
for i in $@
do
echo $i
done
echo "==============\$*"
for i in $*
do
echo $i
done
echo "==============\"\$@\""
for i in "$@"
do
echo $i
done
echo "==============\"\$*\""
for i in "$*"
do
echo $i
done
exit 0
输出结果
//===========输入
./para.sh 1 2
//===========输出
$@:1 2
$0:./para.sh
$1:1
$2:2
$#:2
==============$@
1
2
==============$*
1
2
=============="$@"
1
2
=============="$*"
1 2
$@ | 脚本的所有参数集合 |
$* | 脚本的所有参数集合 |
$# | 参数的个数 |
$0 | 指当前脚本以及脚本路径 |
$1 | 脚本中的第一个参数 |
$2 | 脚本中的第二个参数 |
$@、$*、 “$@” 、"$*" 几种格式只有 “$*” 会将参数合并成一行其它都会将参数分开见输出结果。