《Linux Shell 脚本攻略》学习记录之二
来源:互联网 发布:微信点餐系统源码 编辑:程序博客网 时间:2024/05/16 09:08
时间
查看日期
date "+%d %B %Y"
设置日期和时间
date -s "格式化的日期字符串"
获取脚本执行时间
#!/bin/bash
#文件名: time_take.sh
start=${date +%s}
commands;
statements;
end=$(date +%s)
difference=$(( end - start ))
echo Time taken to execute commands is $difference seconds.
日期格式
日期内容 格式
星期 %a %A
月 %b %B
日 %d
固定格式日期 %D
年 %y %Y
小时 %I 或 %H
分钟 %M
秒 %S
纳秒 %N
Unix纪元时(以秒为单位) %s
延时
sleep count
调试脚本
1> 使用选项-x,启动shell脚本的跟踪调试功能:
$ bash -x script.sh
运行带-x标志的脚本可以打印出所执行的每一行命令以及当前状态。也可以用sh -x script
2> 使用set -x 和set +x对脚本进行部分调试。
#!/bin/bash
for i in {1..6}
do
set -x
echo $i
set +x
done
echo "Script executed"
set -x: 在执行时显示参数和命令,标识将脚本中执行过的每一行都输出到stdout.
set +x: 禁止调试
set -v: 当前命令进行读取时显示输入
set +v: 静止打印输入
管道
$ cmd1 | cmd2 | cmd3 这些命令成为过滤器,使用管道连接每个过滤器,管道操作符是|
ls | cat -n > out.txt
使用管道并利用子Shell的方式将多个文件的输出组合起来。
例子:
组合两个命令
ls | cat -n > out.txt
>子Shell
cmd_output=$(ls | cat -n)
echo $cmd_output
>反引用
cmd_output=`COMMANDS`
cmd_output=`ls | cat -n`
echo $cmd_output
>利用子Shell创建一个独立进程
pwd;
(cd /bin; ls)
pwd;
当命令在子Shell中执行时,不会对当前shell有任何影响;所有的改变仅限于子
shell内。例如当用cd命令改变子Shell的当前目录时,这种变化不会反映到主shell环境中。
>通过引用子Shell的方式保留空格和换行符
可以放入双引号中,以保留空格和换行符(\n)。
out=$(cat text.txt)
echo $out
1 2 3 #Lost \n spacing in 1,2,3
out="$(cat text.txt)"
echo $out
不使用回车键来读取n个字符
1> 从输入中读取n个字符并存入变量variable_name
read -n 2 var
echo $var
2> 用无回显得方式读取密码
read -s var
3>显示提示信息
read -p "Enter input:" var
4> 在特定的时限内读取输入
read -t timeout var
例如:
read -t 2 var #在2秒内键入字符
5>用特定的字界符作为输入行的结束
read -d delim_char var
例如:
read -d ":" var
运行命令直至执行成功
repeat()
{
while true
do
$@ && return
done
}
一种更快的做法
repeat() {while :; do $@ && return; done}
增加时延
repeat() {while :; do $@ && return; sleep 30; done }
字段分隔符和迭代器
IFS是存储定界符的环境变量。它是当前shell环境使用的默认定界符。
data="name,sex,rollno,location"
oldIFS=$IFS
IFS=, #now
for item in $data
do
echo Item: $item
done
IFS=$oldIFS
查看日期
date "+%d %B %Y"
设置日期和时间
date -s "格式化的日期字符串"
获取脚本执行时间
#!/bin/bash
#文件名: time_take.sh
start=${date +%s}
commands;
statements;
end=$(date +%s)
difference=$(( end - start ))
echo Time taken to execute commands is $difference seconds.
日期格式
日期内容 格式
星期 %a %A
月 %b %B
日 %d
固定格式日期 %D
年 %y %Y
小时 %I 或 %H
分钟 %M
秒 %S
纳秒 %N
Unix纪元时(以秒为单位) %s
延时
sleep count
调试脚本
1> 使用选项-x,启动shell脚本的跟踪调试功能:
$ bash -x script.sh
运行带-x标志的脚本可以打印出所执行的每一行命令以及当前状态。也可以用sh -x script
2> 使用set -x 和set +x对脚本进行部分调试。
#!/bin/bash
for i in {1..6}
do
set -x
echo $i
set +x
done
echo "Script executed"
set -x: 在执行时显示参数和命令,标识将脚本中执行过的每一行都输出到stdout.
set +x: 禁止调试
set -v: 当前命令进行读取时显示输入
set +v: 静止打印输入
管道
$ cmd1 | cmd2 | cmd3 这些命令成为过滤器,使用管道连接每个过滤器,管道操作符是|
ls | cat -n > out.txt
使用管道并利用子Shell的方式将多个文件的输出组合起来。
例子:
组合两个命令
ls | cat -n > out.txt
>子Shell
cmd_output=$(ls | cat -n)
echo $cmd_output
>反引用
cmd_output=`COMMANDS`
cmd_output=`ls | cat -n`
echo $cmd_output
>利用子Shell创建一个独立进程
pwd;
(cd /bin; ls)
pwd;
当命令在子Shell中执行时,不会对当前shell有任何影响;所有的改变仅限于子
shell内。例如当用cd命令改变子Shell的当前目录时,这种变化不会反映到主shell环境中。
>通过引用子Shell的方式保留空格和换行符
可以放入双引号中,以保留空格和换行符(\n)。
out=$(cat text.txt)
echo $out
1 2 3 #Lost \n spacing in 1,2,3
out="$(cat text.txt)"
echo $out
不使用回车键来读取n个字符
1> 从输入中读取n个字符并存入变量variable_name
read -n 2 var
echo $var
2> 用无回显得方式读取密码
read -s var
3>显示提示信息
read -p "Enter input:" var
4> 在特定的时限内读取输入
read -t timeout var
例如:
read -t 2 var #在2秒内键入字符
5>用特定的字界符作为输入行的结束
read -d delim_char var
例如:
read -d ":" var
运行命令直至执行成功
repeat()
{
while true
do
$@ && return
done
}
一种更快的做法
repeat() {while :; do $@ && return; done}
增加时延
repeat() {while :; do $@ && return; sleep 30; done }
字段分隔符和迭代器
IFS是存储定界符的环境变量。它是当前shell环境使用的默认定界符。
data="name,sex,rollno,location"
oldIFS=$IFS
IFS=, #now
for item in $data
do
echo Item: $item
done
IFS=$oldIFS
0 0
- 《Linux Shell 脚本攻略》学习记录之二
- 《Linux Shell 脚本攻略》学习记录之三
- 《Linux Shell 脚本攻略》学习记录之四
- 《Linux Shell 脚本攻略》学习记录之一
- Linux Shell脚本攻略学习总结:二
- 《Linux Shell脚本攻略》学习(二)
- Linux Shell脚本攻略(二)
- linux shell脚本攻略总结(二)
- Linux Shell脚本攻略学习总结:一
- Linux Shell脚本攻略学习总结:三
- Linux Shell 脚本攻略学习--四
- 《Linux Shell脚本攻略》学习(一)
- Linux Shell脚本攻略学习笔记
- Linux Shell 脚本攻略 学习笔记-1
- Linux shell 脚本攻略 学习笔记-2
- Linux shell 脚本攻略 学习笔记-3
- linux shell 脚本攻略 学习笔记-4
- Linux shell 脚本攻略 学习笔记-5
- Xcode如何删除已安装的插件
- 工具推荐:禅道项目管理工具
- ubuntu14.04下快捷方式的设置
- 开始使用博客,记录生活~
- RxJava 入门
- 《Linux Shell 脚本攻略》学习记录之二
- JSTL标签库简单学习
- 5-1 1593 Alignment of Code代码对齐
- 找出假币
- Could not resolve placeholder
- Dubbo 与 Zookeeper SpringMVC 的整合
- android 静默安装功能的实现
- 深入理解Java中的序列化(Serializable)
- 客户出问题后的询问流程(待完善)