Shell脚本学习
读
《Shell脚本学习指南》
一书
基本语法
- 环境变量
$PATH
- IO重定向:
- 以
<
改变标准输入- 如:
tr -d '\r' < dos-file.txt
- 如:
- 以
>
改变标准输出- 如:
tr -d '\r' < dos-file.txt > UNIX-file.txt
(如果>
的目的文件不存在,将自动创建,若存在,将覆盖原文件)
- 如:
- 以
>>
附加到文件(文件末尾追加)- 若文件不存在,则自动创建,若存在,则在文件末尾追加
- 以
|
建立管道- 前一个program的输出作为后一个program的输入(
program1 | program2
),如:ls | grep a
- 前一个program的输出作为后一个program的输入(
- 以
-
特殊文件:
/dev/null
和/dev/tty
-
/dev/tty:输入密码时,默认不打印输入的密码到终端,例如:(-echo 用来关闭打印输入,echo打开)
printf "Enter new password: "
stty -echo
read pass < /dev/tty
printf "Enter again: "
read pass2 < /dev/tty
stty echo
...
-
常用命令:
- who:查询系统的登陆用户
- cat > 文件名 :将后面的输入信息重定向到文件中,以 ^D 结束
- tr:转换字符
-
-d
:删除source-char-list所列举的字符,如:tr -d '\r' < dos-file.txt | sort > UNIX-file.txt
,将dos-file.txt中的回车符全部删掉,再排好序重定向到UNIX-file.txt文件中
-
- sh (执行一个脚本)
-
-x
显示脚本中的每个命令,以+
开头,可以在脚本中打开追踪功能,set -x
,用set +x
关闭追踪
-
- grep
- sed
- cut
- awk
- sort
- uniq :(去重)
- head -n n 查看前n行
tail -n n 查看后n行
umask
命令使用注意事项
- 以
-
开头表示选项,以--
开头表示长选项 - 多条命令写在一行,以
;
分隔
脚本的语法说明:
- 以
#! 脚本解释器路径
开头,如:#! /bin/sh
- 变量
- 命名:字母或下划线开头,后面可以是字母数字,下划线
- 赋值:变量名=值(注意等号前后不能有任何空格,变量值之间有空格时,需要用引号括起来),单行多次赋值,之间用空格分隔
- 使用变量:以
$变量名
- 输出:
-
echo
- echo 参数(参数以空格分隔)
-
printf
- 不会自动换行,需要换行,需在末尾加上
\n
- 例句:
printf "the first program always print %s,%s" hello world
(\d
表示十进制整数)
- 不会自动换行,需要换行,需在末尾加上
-
- 再shell脚本中访问shell脚本的参数
- 读取第
n
个参数,通过$n
读取,若n
的数值大于9,则需用大括号括起来,如${10}
,读取第10个参数
- 读取第
未完–