shell_syntax

上一篇 / 下一篇  2018-03-06 23:00:13 / 个人分类:Shell

1.头文件:#!/usr/bin/sh -

2.赋值: temp_file_a=`basename $file_a`

3.打印语句:echo "Creating latest link"

4.input 语句:read x || echo $x

Note: 以〈〉打开一个文件作为输入输出使用

5. if 语句:

if test "${temp_file:0:3}" = "LA."
then
temp_file_a=`basename $file_a`
echo $temp_file_a
`perl report_body_ver1.21.pl $temp_file_a`
echo -e "done -->$temp_file_a"
#sh toExcel.sh "$folder_dir/$dir_name/modules_files/$temp_file" ./$dir_name/xls_files
else
continue
fi

6. 执行Linux命令:`rm dir_name.rpt -rf`

7. For循环命令:

for file_a in ${Folder_A}/*
do

temp_file=`basename $file_a`
if test "${temp_file:0:3}" = "LA."
then
temp_file_a=`basename $file_a`
echo $temp_file_a
`perl report_body_ver1.21.pl $temp_file_a`
echo -e "done -->$temp_file_a"
#sh toExcel.sh "$folder_dir/$dir_name/modules_files/$temp_file" ./$dir_name/xls_files
else
continue
fi
done

8.time命令: todays_date=`date '+_%d%b%y'`

第二章 入门
2.3 一个简单的脚本
$who
$who | wc -l
$cat > nuser
who | wc -
Ctrl - D
头文件
#!/bin/sh -
2.5.2变量
$m>ghong="guo_hong trying to learn more"
$:>PATH=$PATH:$HOME/bin
$:>echo $ghong // -n省略结尾的换行符
2.5.4 华丽的printf的输出
$:>printf "Hello World \n"
$:>printf "The first program alwasy printls ‘%s, %s’ \n " hello world
2.5.5基本的I/O重定向
(1)以<改变标准输入
(2)以>改变标准输出
$:>tr -d '\r' < dos-file.txt >Unix-file.txt //转化字符
(3) 以>>附加到文件
for f in dos-file*.txt
do
tr -d '\r' < $f >> big-Unix-file.txt
done
(4) 以|建立管道
(5)特殊文件:/dev/null(位桶,垃圾丢弃) /dev/tty(重定向到终端,例如输入用户密码)
if grep pattern my file > /dev/null
then
else
fi

stty -echo //关闭自动打印输入字符的功能
stty echo //恢复打印字符串的功能

2.6脚本的命令行参数
$1 ${10}

2.7脚本中执行简单的跟踪
set -x //打开跟踪功能
set +x //关闭跟踪功能

第三章 查找与替换
3.1查找文件
grep || egrep || fgrep
3.2正则表达式
区分BRE,ERE
3.2.7文本文件里进行替换
sed 's/:.*/:::::::/' /etc/passwd | sort -u //每一行里的第一个:替换为:::::
sed -n '/<HTML>/p' *.html //仅打印<HTM>行
sed 's/:.*//g' /etc/passwd | sort -u //每一行里每一个:替换为:::::
sed 's/:.*//5' /etc/passwd | sort -u //每一行里每5个:替换为:::::
sed -e 's/:.*//5' -e 's/ghong/cindy/' /etc/passwd > example.txt

//每一行里每5个:替换为:::::
find /home/tolstroy -type d -print | sed ‘s;/home/tolstroy/;/home/lt/;' | sed ‘s/^/mkdir /' | sh -x //目录结构从命名
find /home/tolstroy -type d -print | sed ‘s;\(/home\)/tolstroy/;\1/lt/;' | sed ‘s/^/mkdir /' | sh -x //目录结构从命名
3.3字段处理
cut -d : -f 1,5 /etc/passwd //-d分割符 -f字段位置
join -t ; file1 file2 //-t插入分割字符
awk ‘{print $1}’; awk ‘NF > 0 {print $1}’;
awk -F: ‘{print "User",$1,"is really",$5}’ /etc/passwd

第4章 文本处理工具

第4章 文本处理工具
4.1排序文本
4.1.2以字段排序
sort -t: -k1,1 /etc/passwd
sort -t: -k3nr /etc/passwd
sort -t: -k4n -k3n /etc/passwd
sort -t: -k4n -u /etc/passwd
4.1.3以文本块排序(P87)
cat my-friends |
awk -v RS="" '{gsub ("\n","^Z"); print}' |
sort -f |
awk -v RS="\n\n" '{gsub ("^Z",\n); print}' |
grep -v '# SORTKEY'
gsub 为全局性替换

4.2删除重复
uniq提供删除重复命令,常用在管道里
sort latin-numbers | uniq
sort latin-numbers | uniq -c -d -u

4.3 重新格式化段落
sed -n -e 9991,10010p /usr/dict/words | fmt
sed -n -e 9995,10004p /usr/dict/words | fmt -w 30
fmt -s -w 10 << END_OF_DATA //END_OF_DATA表示输入数据时的结束标记
4.4计算行数、字数以及字符数
wc 报告行数,字数,字符数
wc -l wc -w wc -c
4.5打印
lpr -Plcb102 sample.ps //文件放入队列
lpr -Plcb102 //查看队列状态
lpr -Plcb102 81352 //结束作业
pr files | lp
4.6提取开头和结尾数行
head -n n file.txt
sed 'FNR <= n' file.txt
tail -n n file.txt

第5章 管道的神奇魔力
栗5-1建立办公室名录
#!、bin/sh
umask 077
PRESON=/tmp/pd.key.person.$$
OFFICE=/tmp/pd.key.office.$$
TELEPHONE=/tmp/pd.key.telephone.$$
USER=/tmp/pd.key.user.$$

trap "exit 1"
trap "rm -f $PERSON $OFFICE $TELEPHONE $USER"

awk -F: ‘{print $1 ":" $5}’ > $USER

sed -e 's=/.*=' -e 's=='
sed -e
sed -e

join -t: $PERSON $OFFICE |
join -t: - $TELEPHONE |
cut -d: -f 2- |
sort -t: -k1,1 -k2,2 -k3,3 |
awk -F: '{printf(%-39s\t%s\t%s\n, $1, $2, $3)}'

第6章变量,判断,重复动作
(1)
hour_per_day=24 second_per_hour=3600
readonly hours_per_day second_per_hour //设为只读变量

FOO=somevalue
export FOO //export用于修改或者打印环境变量,readonly使变量不能够被修改。

export将变量放进环境
export PATH=$PATH:/usr/local/bin
export -p //显示当前环境
(2)
env -i PATH=$PATH awk '...' files //env将变量传递给awk命令
(3) unset 命令从执行的shell中删除变量与函数
unset full_name
unset -v first second last //删除多个变量
unset -f function_name //删除函数
who_is_on () { //定义函数名为who_is_on
who | awk
}
(4)参数展开
reminder="Time to go to bed"
sleep 120
echo _${reminder}_
《替换运算符》
${varname:-word} //如果变量未定义,则返回默认值
${varname:=word} //如果变量未定义,则设置其值,并返回
${varname?=message} //如果变量未定义,则给出message
${varname:+word} //如果变量已经定义,则返回word
《模式匹配运算符》
${variable#pattern} //删除匹配字符前的最短部分
${variable##pattern} //删除匹配字符前的最长部分
${variable%pattern} //删除匹配字符后的最短部分
${variable%%pattern} //删除匹配字符后的最长部分
${#x} //返回x变量中字符的长度
《位置参数》
$# //传递给shell脚本或函数的参数总数
$* , $@ //一次表示所有的参数 $* 等同于“$1 $2 $3 $4 ...” $@等同于“$1” “$2” ...


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2018-08-16  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 7083
  • 日志数: 37
  • 建立时间: 2018-01-19
  • 更新时间: 2018-07-17

RSS订阅

Open Toolbar