shell脚本应用笔记

192 阅读1分钟

1.条件表达式

  • if[ -f file ] 如果文件存在
  • if[ -d ... ] 如果目录存在
  • if[ -s file ] 如果文件存在且非空
  • if[ -r file ] 如果文件存在且可读
  • if[ -w file ] 如果文件存在且可写
  • if[ int1 -eq int2 ] 如果int1等于int2
  • if[ int1 -ne int2 ] 如果不等于
  • if[ int1 -ge int2 ] 如果>=
  • if[ int1 -gt int2 ] 如果>
  • if[ int1 -le int2 ] 如果<=
  • if[ int1 -lt int2 ] 如果<

2.接收输入值

read -p "请输入回退的版本:" backid
    echo $backid

3.读取文件夹内每个文件名,并输出

for name in `find . -type f -name"*"`
    do
        name=`echo "$name1"`
        echo ${name}
done

4.NC命令探测端口是否占用并返回结果

NC=`nc -vv -z 11.5.0.44 1521 | awk '{print $2}'`
    echo $NC

5.循环

do 循环s
    et i=0    set j=0    for((i=0;i<10;))
        do
            let”j=j+1”            echo “--------jis $j---------”
        donewhile循环
    set j=2
    while true        do
            let”j=j+1”            echo “--------jis $j---------”        done

6.替换同一文件下其他文件中的指定字段并保存替换后的文件在changefile文件中

#!/bin/sh#请将此sh脚本放在待替换文件的文件夹中#待替换字段bef=ifp#字段替换为after=uloan#创建替换完成的文件存放目录if [ ! -d changefile ];thenmkdir changefileelseecho "changefile is alreadyexist"fi#循环读取每个文件for name in `find . -type f -name"*"`do#echo ${name#*/}#不处理change.sh文件if[ "${name#*/}" = "change.sh" ];thenecho ${name#*/}echo "this file shoule not bechange"elseecho "ready to change ${name#*/}"name2=`echo "${name#*/}"`cp $name2 ./changefile/$name2cd changefileecho "sed -i 's/"$bef"/"$after"/g'$name2" > sed.shchmod 777 sed.sh./sed.shrm -f sed.shecho "$name2 has changed"cd ..fidone

7.连接mysql数据库

#!/bin/sh#连接mysql数据库HOSTNAME="11.5.0.78"PORT="3307"USERNAME="root"PASSWORD="1q2w3e4R"DBNAME="shrcb_uloan_dev"select_sql="SELECT batch_def.* FROMbatch_def"mysql -h${HOSTNAME} -P${PORT}  -u${USERNAME} -p${PASSWORD}  ${DBNAME} -e "${select_sql}"

8.解压

解压tar -xvf $name压缩tar -zcvf $name name.tar.gz

9.截取字符串

echo ${name:开始位置:截取长度}

10.替换字符串

替换字符echo ${name}|tr " " "_"#空格替换为下划线替换字符串echo ${name/查找/替换}echo ${name//查找所有/替换}

11.连接oracle数据库并输出结果到文件

ORACLE_HOME=/soft/u01/app/oracle/product/11.2.0.4/db_1export ORACLE_HOMELD_LIBRARY_PATH=/soft/u01/app/oracle/product/11.2.0.4/db_1/lib:/lib:/usr/libexport LD_LIBRARY_PATHPATH=/soft/u01/app/oracle/product/11.2.0.4/db_1/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/soft/u01/app/oracle/binexport PATHexport NLS_LANG=".AL32utf8"echo "SET HEAD OFF ECHO OFF TERM OFFLINE 2000 PAGES 0 FEED OFF;" > test.sqlecho "SPOOL /soft/u01/app/oracle/SYM_ETL/data/CUR/JFQY/XPB/SL_45_INFO.dat;">> test.sqlecho "select * FROM SL_45_INFO ;">> test.sqlecho "SPOOL OFF;" >>test.sqlecho "EXIT;" >> test.sql$ORACLE_HOME/bin/sqlplus JFQY/JFQY@jfqy@test.sql<<EOFEOF

12.读取文件每一行内容

for line in `cat deploy.sh`doecho$linesleep 0.5scleandone