1、通过传递参数变量调用数据库
while [ 1 ]
do
if [ "$1" = "-u" ]
then
shift 1
user=$1
fi
if [ "$1" = "-p" ]
then
shift 1
password=$1
fi
if [ "$1" = "-i" ]
then
shift 1
db=$1
fi
shift 1
if [ $# -eq 0 ]
then
break
fi
done
sqlplus $user/$password@$db </dev/null
spool /home/ap/ods/tmp/lgt/a.txt
select * from b_m_dd_para;
spool off
TMP
1、通过传递参数变量调用数据库
while [ 1 ]
do
if [ "$1" = "-u" ]
then
shift 1
user=$1
fi
if [ "$1" = "-p" ]
then
shift 1
password=$1
fi
if [ "$1" = "-i" ]
then
shift 1
db=$1
fi
shift 1
if [ $# -eq 0 ]
then
break
fi
done
sqlplus $user/$password@$db </dev/null
spool /home/ap/ods/tmp/lgt/a.txt
select * from b_m_dd_para;
spool off
TMP
1、变量赋值、打印
#!/bin/sh #对变量赋值
a="hello word" #打印a的变量
echo $a
#变量和其他文件混淆,可以使用花括号来告诉shell我们要打印的是num变量
num=2
echo "this is the $numnd"
echo "this is the ${num}nd"
输出结果:
hello word
this is the
this is the 2nd
说明:
1、符号#!用来告诉系统执行该脚本的程序,本例使用/bin/sh。编辑完了,如果
要执行该脚本,还必须使其可执行
2、给变量赋值时"="号前后不能有空格,否则识别不了
3、后面使用的变量必须和前面的一致,区分大小写
============================================================================
=========================================================
1、程序执行时从键盘读入一个文件名,然后创建这个文件
#!/bin/sh
read reply #提示用户输入,并将输入内容赋值给变量var
echo $reply #打印reply的变量
echo "Creating The DIR $reply..."
mkdir $reply #根据在屏幕上输入的字符串创建一个文件夹
echo "DONE! The DIR $reply Created."
输出结果:
在屏幕上输入 "aaa",在当前目录下创建一个aaa的文件目录
说明:1、执行命令后,输入参数后,程序才执行
============================================================================
=========================================================
3、查找当前目录下过去24小时内修改的文件,并以-zcvf打包成一个.tar.gz的压缩包
#!/bin/sh
tar -zcvf aaa.tar.gz `find . -mtime -1 -type f -print`
输出结果:
当前目录下出现一个aaa.tar.gz的压缩包
说明:
1、find . -mtime -1 -type f -print --查找当前目录下过去24小时内修改的
文件
2、find 后面的"."符号代表当前目录,也可以去掉或者用"./"代替
3、在shell张执行命令时用"``"括起来,其他单引号和双引号都不认,这个字符
在按键ESC下的那个按键
============================================================================
=========================================================
4、if else 语句的使用
#!/bin/sh
echo $SHELL
if [ "$SHELL"="/bin/bash" ]
then
echo "your login shell is the bash (bourne again shell)"
else
echo "your login shell is not bash but $SHELL"
fi
输出结果:
your login shell is the bash (bourne again shell)
说明:
1、if后面不能和[]连到一块,另外if中的语句应保持有空格存在
============================================================================
=========================================================
4、&&和||的使用,该脚本首先判断mailfolder是否可读,如果可读则打印该文件中
的"step" 一行。如果不可读则或操作生效,打印错误信息后脚本退出
#!/bin/sh
mailfolder=/home/ap/ods/fhts_proc/bin/B410_B_S_DEP_SAE_ACCT_CLOSE_RUN.sh
[ -r "$mailfolder" ] || { echo "Can not read $mailfolder" ; exit 1; }
[ -f "$mailfolder" ] && echo "This computer uses shadow passwors"
echo "$mailfolder has mail step:"
grep "^step" $mailfolder
输出结果:
This computer uses shadow passwors
/home/ap/ods/fhts_proc/bin/B410_B_S_DEP_SAE_ACCT_CLOSE_RUN.sh has mail step:
step=$4
说明:
1、[ -f "somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和b是否相等
[ -r "$mailfolder" ] :判断$mailfolder是否可读
2、grep 字符串时"^"表示从每行第一个字符开始匹配,"$"表示从每行最后一个
字符开始匹配
3、exit 1; 表示退出脚本
============================================================================
=========================================================
5、case in使用,该脚本可以自动解压bzip2, gzip 和zip 类型的压缩文件
语法: case ... in
...) do something here ;;
esac
------------------------------------------------------
#!/bin/bash
file=$1
ftype=`file "$1"`
case "$ftype" in
"$1: Zip archive"*)
unzip $1;;
"$1: gzip compressed"*)
gunzip $1;;
"$1: bzip2 compressed"*)
bunzip2 "$file" ;;
*) echo "File $file can not be uncompressed with smartzip";;
esac
输出结果:根据输入的文件类型,解压文件
说明:
1、$1是一个特殊变量,该变量包含了传递给该程序的第一个参数值。也就是说
,当我们运行:sh a6.sh articles.zip ,$1 就是字符串 articles.zip
2、file "$1" 获得该文件的类型
3、如果出现command not found命令找不到,检查那一行是否有非法字符,重新
编写下
============================================================================
=========================================================
6、select 表达式是一种bash的扩展应用,尤其擅长于交互式使用。用户可以从一组不
同的值中进行选择
语法: select var in ... ; do
break
done
------------------------------------------------------
#!/bin/sh
echo "What is your favourite OS?"
select var in "Linux" "Gnu Hurd" "Free BSD" "Other"; do
break
done
echo "You have selected $var"
-----------------------------------------------------
输出结果:
What is your favourite OS?
1) Linux
2) Gnu Hurd
3) Free BSD
4) Other
#? 1
You have selected Linux
说明: 1、执行命令后输入一个编号,确定出信息
============================================================================
=========================================================
7、for-loop表达式查看一个字符串列表 (字符串用空格分隔) 然后将其赋给一个变量
:
语法: for var in ....; do
....
done
------------------------------------------------------
#!/bin/bash
for var1 in "A B C"
do
echo "aaa";
echo "bbb $var1";
done
输出结果:
bbb A B C
============================================================================
=========================================================
8、引号 (单引号和双引号) 将防止这种通配符扩展:
------------------------------------------------------
#!/bin/bash
echo *.sh
echo "*.sh"
echo '*.sh'
echo $SHELL
echo "$SHELL"
echo '$SHELL'
echo \.sh
echo \$SHELL
--------------------------------------------------------------
输出结果:
a1.sh a2.sh a3.sh a4.sh a5.sh a6.sh a7.sh a8.sh
*.sh
*.sh
/bin/bash
/bin/bash
$SHELL
*.sh
$SHELL
说明:
1、单引号和双引号都可防止通配符扩展,如echo "*.sh" 和 echo ‘*.sh’都
只打印出字符串值,不会执行命令。
2、单引号更严格一些。它可以防止任何变量扩展。双引号可以防止通配符扩展
但允许变量扩展。如: echo "$SHELL" 命令会执行,echo '$SHELL'不会执行
3、还有一种防止这种扩展的方法,那就是使用转义字符—反斜杆,在命令前加
上"\"
============================================================================
=========================================================
9、判断lgtq下的bb.txt文件是否存在,存在的话创建lgtqaaa文件夹,不存在的时候复
制aa.txt文件到lgtqaaa目录下。
#!/bin/bash
echo "复制文件"
fileName="lgtqaaa" #变量的使用
#判断lgtq文件夹下的bb.txt是否存在
if [ -e lgtq/bb.txt ]
then
echo "文件存在"
mkdir $fileName
else
cp aa.txt $fileName/bb.txt
echo "复制文件结束"
fi
exit
------
#!/bin/bash
echo "复制文件"
fileName="lgtqba"
if [ -f "lgtq/bb.txt" ]
then
echo "文件存在"
mkdir $fileName
else
cp aa.txt $fileName/bb.txt
echo "复制文件结束"
fi
exit
------
用if [ -e lgtq/bb.txt ] 和 if [ -f "lgtq/bb.txt" ]是同一个效果。
----------------判读一个文件夹是否存在----------------
#!/bin/bash
echo "复制文件"
fileName="lgtqbca"
if [ -d "lgtq" ]
then
echo "文件存在"
mkdir $fileName
else
cp aa.txt $fileName/bb.txt
echo "复制文件结束"
fi
exit
----------------判断一个文件是否存在还可用下面的&&表达式--
[ -f "/etc/shadow" ] && echo "This computer uses shadow passwors"
#!bin.sh
[ -f "/home/ap/ods/gtli/lgtq/bb.txt" ] && echo "This computer uses shadow
passwors"
============================================================================
=========================================================
阅读(2294) | 评论(0) | 转发(1) |