shell脚本编程

11 篇文章 0 订阅
2 篇文章 0 订阅
例1: 用vi编辑文件echodate输出系统日期
# vi echodate

#%Y
#%m
#%d
echo `date +%Y%m%d`

保存并退出。

# sh ./echodate
20160125
或者
# chmod 755 echodate
# ./echodate
20160125

--------------------------------------------------------------------------------------------------------------------


PS1: 主命令提示符。用户可根据需要自行定义。
PS2: 二级命令提示符。命令执行过程中要求输入数据时用。
LD_LIBRARY_PATH: 寻找动态链接库的路径。如果存在多个路径,路径间用冒号分隔。

用户自定义PS1环境变量举例:
\d 显示当前日期
\h 显示主机名
\t 显示当前时间
\u 显示当前用户的用户名
\w 显示当前工作目录的路径

把提示符格式修改为: "[主机名-用户名][工作目录]>"的形式
export PS1="[\h-\u][\w]" #这个是临时性的

# vi /etc/profile 或者 vi .bash_profile
加入export PS1="[\h-\u][\w]"这句
# source /etc/profile 或者 source .bash_profile


---------------------------------------------------------------------------------------------------------------------


管道是将一个命令的输出作为另一个命令的输入。
例: 要统计当前目录下文件的数量可以用下述命令实现:
# ls|wc -l # ls是显示列表命令,wc是统计命令,|是管道的符号,这条命令表示wc统计ls的输出信息。


重定向技术可以将输入或输出重新定向到指定的目标,如某个文件或打印机等。
>: 重定向,如果是重定向至文件,则目标文件被覆盖。
>>: 重定向,如果是重定向至文件,则将在目标文件的尾部追加。
# cat 文件名称>/opt/a.txt


<: 输入重定向。
<<: 也称为here文档操作符。它通知shell当前运行的命令的输入来自命令行。<<操作符后面的输入用一个分隔符开始,用同样的另外一个分隔符结束。两个分隔符间的内容就是要执行的命令的输入。例如,要统计一段文字单次的数量,如下所示:
wc<<delim
This is a test program!
This is the second line.
delim


创建一个shell脚本autoftp,实现自动登录ftp服务器并下载某文件。其实现过程如下:
# vi autoftp
ftp -n 192.168.1.10<<!
user abc password
get $1
bye
!

保存并退出。

【代码解析】在本例中,通过执行非交互模式(-n选项)的ftp,使用输入重定向符<<,实现了自动登录ftp服务器并下载指定文件的功能。源码的各行解释如下。
第一行:执行非交互模式的ftp,通过<<指定ftp的输入来自于后续的文本。
第二行:自动输入ftp服务器的用户名和密码。
第三行:调用ftp的get命令从服务器获取指定的文件。
第四行:关于与ftp服务器的连接。
第五行:重定向的第二个分隔符,注意该符号应该从下一个新行开始。


----------------------------------------------------------------------------------------------------------------------------------------------------------------------


shell变量的使用:
类型: 环境变量、用户自定义变量、系统全局变量。
系统全局变量代表了特定的含义,不能为用户所修改,主要的全局变量包括以下3个:
$#: 执行shell脚本时的命令行参数个数,不包括脚本本身
$?: 执行上一条shell命令的返回值
$0: shell脚本程序自身的名称

变量定义格式如下:
变量名称=变量初始值(注意等号两边不能够有空格)
在用户定义自己的变量时,要遵循以下命名规则。
1、首个字母必须为字母(a~z、A~Z)
2、中间不能有空格,可以使用下划线
3、不能使用标点符号
4、不能使用shell里的关键字(可执行help命令查看保留关键字)


要在脚本程序中使用变量,则通过"$变量名称"的方式进行。即在变量的前面加$符号。另外,在shell编程中存在一种称为位置变量的变量。这种变量类似于C语言编程中的命令行参数,它代表了执行shell程序时的命令行参数。要在shell脚本中引用这些位置变量,通过$0,$1,$2,...的方式进行。其中,$0代表shell命令程序本身,而$1代表shell命令行的第一个参数,$2代表第二个参数,以此类推。


-----------------------------------------------------------------------------------------------------------------------------------------------------------------------


shell批处理:

# vi test.sh
程序必须以下面的行开始(必须放在文件的第一行)
#!/bin/sh
符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。

能执行普通的命令。

例如:
#!/bin/bash
# shutdown pc
sudo shutdown +1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值