shell脚本

1 篇文章 0 订阅
1 篇文章 0 订阅

shell脚本就是一些文件,我们能将一系列需要执行的命令写入其中,然后通过shell执行。

shell脚本的执行

shell脚本通常是一个以shebang起始的文本文件:

#!/bin/bash

代表该脚本将由/bin/bash解析执行

有两种运行脚本的方式。一种是将脚本作为bash的命令行参数另一种是授予脚本执行权限,将其变成科执行文件。

将脚本作为命令行运行方式如下:

$ bash script.sh

如果将脚本作为命令行参数使用则可以不使用shebang。

将脚本作为可执行文件来执行,需要现将其赋予执行权限:

$ chmod a+x script.sh

然后便可像下面这样执行:

$ ./script.sh

内核会读取脚本的首行并注意到shebang为#!/bin/bash 。它识别出/bin/bash并在内部像这样执行该脚本:
$ /bin/bash script.sh

终端打印

终端是交互式工具,用户可以通过它与shell环境进行交互。

echo

在默认情况下,echo在每次调用后会添加一个换行符。

$ echo "Welcome to Bash"

Welcome to Bash

使用-n参数可以忽略默认的换行。

$ echo -n 'Welcome to Bash'

Welcome to Bash%

不带双引号也可以打印出相同的结果:

$ echo Welcome to Bash

Welcome to Bash

使用单引号也可以完成相同的任务,但与双引号略有不同。

单引号是强引用,双引号是弱引用。

单引号里的所有内容会被全部照样输出,双引号会先进行必要的转义之后才会输出。

比如:

$ echo 'Welcome\nto\nBash'

Welcome\nto\nBash

$ echo "Welcome\nto\nBash"

Welcom

to

Bash

可以使用-e参数强制转义输出:

$ echo -e 'Welcome\nto\nBash'

Welcom
to
Bash

printf

printf使用的参数和C语言中的printf函数一样。

$ printf "Hello World"

Hello World

printf可以使用格式化字符串,默认情况下printf不会像echo一样自动添加换行符。

#!/bin/bash
#filename: printf.sh

printf "%-5s %-10s %-4s\n" No Name Mark
printf "%-5s %-10s %-4.2s\n" 1 Sarath 80.3456
printf "%-5s %-10s %-4.2s\n" 2 James 90.9989
printf "%-5s %-10s %-4.2s\n" 3 Jeff 77.564
NoNameMark
1Sarath80.35
2James91.00
3Jeff77.56

%-5s 指明了一个格式为左对齐且宽度为5的字符串替换。如果不使用-指定对其方式,字符串就会采用右对齐形式。

变量、环境变量

查看进程相关变量:

cat /proc/$PID/environ

pgrep vim# 获取vim进程的ID
cat /proc/$PID/environ | tr '\0' '\n' # 优化输出

赋值

赋值

var='value'
# 不能写成var = 'value'

引用变量:

echo ${var}

可以在双引号中引用变量:

echo "$var"

设置环境变量

HTTP_PROXY=192.168.1.23.3128
expot HTTP_PROXY

在PATH中添加路径:

export PATH="$PATH:/home/usr/bin"

获取字符长度:

echo ${#var}

获取当前shell:

echo $SHELL
echo $0

在.bashrc中添加下面函数:

prepend() { [ -d "$2"  ] && eval $1=\"$2\$\{$1:+':'\$$1\}\" && export $1;   }

则可以直接这样添加路径:
prepend PATH /home/usr/bin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值