一、echo 命令
1. 显示普通字符
echo "It is a test" # 输出 It is a test
2. 显示转义字符
echo "\"It is a test\"" # 输出 "It is a test"
3. 显示变量
read name
echo "I'm ${name}"
read
命令是一个一个词组地接收输入的参数,每个词组需要使用空格进行分隔;如果输入的词组个数大于需要的参数个数,则多出的词组将被作为整体为最后一个参数接收。
例如:
read firstStr secondStr
echo "第一个参数:$firstStr; 第二个参数:$secondStr"
执行情况:
$ ./test.sh
一 二 三 四
第一个参数:一; 第二个参数:二 三 四
还有一些参数例如:
- -p 输入提示文字
- -n 输入字符长度限制(达到6位,自动结束)
- -t 输入限时
- -s 隐藏输入内容
4. 开启转义
使用 -e
会开启转义,\n
的转义含义就是换行,而 \c
的含义就是不换行。
例如:
echo "换\n行"
echo -e "换\n行"
执行情况:
换\n行
换
行
5. 显示结果定向到文件
echo "It is a test" > myfile # 覆盖的形式
echo "It is a test" >> myfile # 附加的形式
6. 显示命令执行结果
使用反引号 ` 表示命令。
例如:
echo `date`
执行情况:
2018年 07月 20日 星期五 11:22:36 CST
二、printf 命令
类似于 C 语言的 printf()。默认 printf 不会像 echo 那样自动添加换行符,需要我们手动添加 \n
。
1. 语法
printf format-string [arguments...]
2. 示例
printf "%s\t%s\t%s\n" 姓名 年龄 体重
printf "%s\t%d\t%.2f\n" 张三 20 55.1234
执行情况:
姓名 年龄 体重
张三 20 55.12
3. 更多语法介绍参考 C 语言的 printf() 方法吧
三、输入输出重定向
命令 | 说明 |
---|---|
command > file | 将输出重定向到 file |
command < file | 将输入重定向到 file |
command >> file | 将输出以追加的方式重定向到 file |
n > file | 将文件描述符为 n 的文件重定向到 file |
n >> file | 将文件描述符为 n 的文件以追加的方式重定向到 file |
n >& m | 将输出文件 m 和 n 合并 |
n <& m | 将输入文件 m 和 n 合并 |
<< tag | 将开始标记 tag 和结束标记 tag 之间的内容作为输入 |
1. 文件描述符
- 0:标准输入文件(stdin)
- 1:标准输出文件(stdout)
- 2:标准错误文件(stderr)
2. << tag
基本形式为:
command << tag
content
tag
注意:
- 结尾的 tag 一定要顶格写,前面不能有任何字符,后面也不能有任何字符,包括空格和缩进。
- 开始的 tag 前后的空格会被忽略掉。
示例:
wc -l << EOF
1
2
3
EOF
其中 wc -l
命令可以统计 content
的行数,执行结果为:3。
3. dev/null 文件
如果你希望做一个 “禁止输出” 的效果,可以将输出重定向到 /dev/null,例如
command > /dev/null
/dev/null 是一个特殊的文件,写入到它的内容都会被丢弃,如果你希望屏蔽 stdout 和 stderr,可以这样写:
command > /dev/null 2>&1
其中把 $
放在 >
后面,表示重定向的不是一个文件,而是一个文件描述符。
四、文件包含
1. 语法
. filename # 注意点号(.)和文件名中间有一空格
source filename # 这样也可以
2. 示例
新建两个 shell 脚本,其中 test1.sh 如下:
name="afei"
然后 test2.sh 引用 test1.sh 并可以使用这个变量:
source test1.sh
echo "name is: ${name}"
执行 test2.sh 结果如下:
name is afei
五、函数
1. 定义
function_name ()
{
....
}
# 或者
function function_name()
{
....
}
2. 调用
function_name parm1 parm2
3. 返回值
可以显示的加 return 返回,如果不加则将最后一条运行结果作为返回,return 后只能跟整数,且数值范围为 0~255。
使用 $?
获取函数的返回值。
4. 示例
function add()
{
return $(($1 + $2))
}
add 1 2
echo $? # 输出 3