`
shihuan830619
  • 浏览: 573548 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

shell脚本编程

阅读更多
例1: 用vi编辑文件echodate输出系统日期
[root@testgitlab opt]# vi echodate

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

保存并退出。

[root@testgitlab opt]# sh ./echodate
20160125
或者
[root@testgitlab opt]# chmod 755 echodate
[root@testgitlab opt]# ./echodate
20160125

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


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

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

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

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


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


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


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


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


创建一个shell脚本autoftp,实现自动登录ftp服务器并下载某文件。其实现过程如下:
[root@testgitlab opt]# 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批处理:

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

能执行普通的命令。

例如:
#!/bin/bash
# shutdown pc
sudo shutdown +1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics