【linux】SHELL脚本基础知识总结(一)

发表于2015-09-06 09:51  |  次阅读  |  0条评论  |   作者:siru90

【1】linux shell中如何强制停止程序
Ctrl+C,Ctrl+D,Ctrl+Z都可以
 
【2】如何查看本机的linux使用的是什么shell
$ more /etc/shells 可以看到本系统中可以使用哪些shell
$ echo $SHELL  可以查看当前默认的shell
 
【3】变量
变量赋值的方式:变量名称=新值,中间完全没有任何空格,当所赋予的值内含空格时,加上引号
获取shell变量:$变量名
 
环境变量:变量会根据环境设置中的值进行初始化
$HOME: 当前用户的家目录
$PATH: 以冒号分隔的用来搜索命令的目录列表
$IFS: 输入域分隔符。当shell读取输入时,它给出用来分割单词的一组字符,它们通常是空格、制表符和换行符
$0: shell脚本的名字
$#: 传递给脚本的参数个数
$$: shell脚本的进程号,脚本程序通常会用它来生成一个唯一的临时文件,如/tmp/tmpfile_$$
 
参数变量:
$1, $2, ... 脚本程序的参数
$* 在一个变量中列出所有的参数,各个参数之间用环境变量IFS的第一个字符分割开。如果IFS被修改了
那么$*将命令行分割为参数的方式就将随之改变
$@  它是$*的一种精巧的变体,他不使用IFS环境变量,所以即使IFS为空,参数也不会挤在一起
 
【4】echo输出
语法:echo [string]
行为模式:echo将各个参数打印到标准输出,参数之间以一个空格隔开,并以换行符号结束。
参数:-n 会省略结尾的换行符合。例如(下划线符合表示终端画面的光标)
echo -n "Enter your name:"
Enter your name:_
 
【5】test或[]条件
if test -f fred.c
then
...
fi
或者
if [ -f fred.c ]  #注意,必须在[符合和被检查的条件之间留出空格]
then
...
fi
 
 
【6】控制结构
1)if语句
if condition
then
statements
else
..
fi
 
2)for语句
for variable in values
do
statements
done
exit 0
 
3)while语句
while condition do
statements
done
 
 
---------创建脚本-----
#!/bin/bash
 
for file in *
do
if grep -q POSIX $file
then
echo $file
fi
done
 
exit 0
 
------------执行脚本----------
1)调用shell,并把脚本文件名当成一个参数
/bin/sh first
2)修改文件的模式,使得这个文件可以被所有用户执行
chmod +x first
然后用下面命令执行
first
 
 
 
 
 
 
 
 
 
 
 
--------基本的I/O重定向----------
【5】重定向与管道
<改变标准输入
program < file 可将program的标准输入修改为file
tr -d '\r' < file.txt
 
>改变标准输出,
program > file 可将program的标准输出修改为file
> 重定向符在目的文件不存在时,会新建一个。如果目的文件已存在,它会被覆盖掉;原本的数据都会丢失
cat who > file.txt
cat file.txt
 
tr -d '\r' < file.txt > file2.txt
这条命令先以tr将file.txt里的回车符删除(\r),再将转换完成的数据输出到file2.txt
file.txt里面的原始数据不会游变化
 
>>附加到文件
program >> file 可将program的标准输出附加到file的结尾处
如果目的文件不存在,>>重定向符便会新建一个。如果目的文件存在,则将数据附加到文件结尾处
 
以 | 建立管道
program1 | program2可将program1的标准输出修改为program2的标准输入。
 
 
【6】tr命令
语法:tr [options] source-char-list replace-char-list
用途:转换字符。例如,将大写字符转换成小写。选项可让你指定所要删除的字符,以及将一串重复出现的字符浓缩成一个
常用选项:
-c 取source-char-list的反义。tr要转换的字符,变成未列在source-char-list中的字符。
-d 自标准输入删除source-char-list里所列的字符,而不是转换它们
-s 浓缩重复的字符。如果标准输入中连续重复出现source-char-list里所列的字符,则将其浓缩成一个
行为模式:
如同过滤器。自标准输入读取字符,再将结果写到标准输出。任何输入字符只要出现在source-char-list
中,就会置换成replace-char-list里相应的字符
 
 
【7】简单的执行跟踪
例如:
$ sh -x shell  打开执行跟踪功能
+ who  被跟踪的命令
+ wc -l
      7 实际输出
 
脚本中执行跟踪
sex -x 命令将执行跟踪的功能打开,sex +x 命令关闭它
例如:
cat > trace1.sh
#!/bin/bsh
 
set -x
echo lst echo
 
set +x
echo 2nd echo
#以ctrl+D 结尾
 
$ /bin/bash trace1.sh
+ echo lst echo
lst echo
+ set +x
2nd echo
本站关键字:sunny90 web开发 数据库 移动开发 服务器 Nginx Mysql PHP
Copyright © sunny90版权所有 power by sunny90.com  
湘ICP备14012284号-1,粤公网安备 44030602000307号