Unix shell范例精解学习笔记(二)

来源:互联网 发布:数据库技术发展 编辑:程序博客网 时间:2024/05/18 19:45
编写gawk脚本
# My first awk script by Jack Sprat
# Script name:info ;Date:February 28,2004
/Tom/{print "Toms birthday is " $4}
/Mary/{print NR,$0}
/^Sally/{print "Hi Sally."$1 "has a salary of $"$5"."}
# End of info script

通过vi命令:vi info编辑
运行gawk -f info employees
显示:
Toms birthday is 5/12/66
2 Mary Adams    5346    11/4/63 28765
Hi Sally.Sallyhas a salary of $65000.

**************************************************************************************
Linux 更改tty下的中文字体显示乱码问题:
需要先下载fbterm字体
执行如下命令

sudo apt-get install fbterm
sudo fbterm

如果此时还能不能看到显示中文可以Ctrl+Alt+E可切出fbterm虚拟终端,再运行:LANG=zh_CN.utf-8 fbterm

把用户加入用户组:sudo adduser user video
修改用户配置文件"~/.bashrc",在尾部添加命令:LANG=zh_CN.utf-8 fbterm


****************************************************************************************
****************************************************************************************

bash shell编程

#!/bin/bash   #  #!又称为幻数,通过它内核识别并确定该用什么程序来翻译脚本的行,脚本执行时要赋予它可执行权限(x):

chmod a+x filename


关于read的脚本实例:
通过vi命令进行脚本编写
$ vi gretting

#!/bin/bash
# This is the first program of the day!
# Scriptname:Hellowords
# Written by:Fukun Yan
echo "Please tell me your name,thank you:"
read answer
echo "Hello $answer,it is nice to talk wiht you!"
echo -n "Where do you working?"
read
echo "I guess $REPLY keeps you busy."
read -p "Enter you job"
echo "I thought you might be an $REPLY."
echo -n "Who are your best friends?"
read -a friends
echo "Say hi to ${friends[2]}"

说明:echo -n   #表示不换行输出
read answer     #从标准输入中读取一行并赋值给变量answer
read            #从标准输入中读取一行并赋值给内置变量REPLY
read -p prompt  #打印提示符,等待输入,并将输入赋值给变量REPLY
read -a arrayname #读入一组词,依次赋给arrayname(数组)
如:read -p "What is your name?"

echo -e "What is your full name ? \c";read first middle last;echo "Hello,$last!"
#echo -e 加 -e后激活转义字符,如echo -e "What is your full name ? \c" 后面接\c表示输出内容后不换行,结着运行第二条命令

declare -i #定义整型变量
declare -i num=78
echo $num

let num=2*3+2            #let命令可以进行算术运算操作
declare -i num=2#110101  #2表示基数2,“#”后面的数字是二进制
echo $ num
53                       #结果为十进制数53

注意:bash只支持整型运算,但是支持通过bc,awk,gawk等工具来处理复杂的运算

#!/bin/bash
#Scriptname:checker
#Script to demonstrate the use of special variable modifier and arguments
name=${1:?"requires an argument"}
echo "Hello $name"

解释:“:?”表示检测$1是否存在值,不存在在似暗示指定信息"requires an argument"后退出,存在则继续执行程序

关于$* 和$@,没有加引号时,两个表示含义相同,加了引号后,$*设置的位置参量被引号括起来成了一个字符串;$@每个位置参量都被

看作是一个加了引号的字符串
set 'apple pie' pears banbana
for i in $*
do
echo $i
done

echo $?  #变量“?”包含shell执行上一条命令的退出状态,如果是真则显示0,假显示为1.

*****************************************************************************************

特别注意:关于单引号和双引号的区别:
单引号与双引号的最大不同在于双引号仍然可以保有变量的内容,但单引号内仅能是一般字符 ,而不会有特殊符号
举例说明:

``替换命令,等同于$(),如
echo `ls`  #会先执行ls命令,然后把ls执行的结果打印出来



0 0
原创粉丝点击