源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Linux命令行和shell脚本编程宝典 Richard Blum

  • 时间:2022-07-27 06:57 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Linux命令行和shell脚本编程宝典 Richard Blum
第一个脚本文件
[u]复制代码[/u] 代码如下:
#!/bin/bash echo "This is my first bash code!" exit 0
重定向符号和数学计算
[u]复制代码[/u] 代码如下:
#!/bin/bash echo -n "The time and date are: " date value1=100  #等号前后不允许出现空格 value2=$value1 echo -n "value1=" echo $value1 echo -n "value2=" echo $value2 ls -l | sort > out.txt   #管道符号(|)和重定向输出符号> ls -l >> out.txt   #重定向追加输出符号>> echo -n  "wc<out.txt:" wc < out.txt  #重定向输入符号< echo "sort<<EOF ... EOF" sort << EOF  #内置输入重定向<< `date` EOF #数学计算 echo -n "expr进行计算:1+5=" expr 1+5 echo -n "使用方括号进行计算:1+5=" echo $[1+5] echo "使用bc计算器进行浮点运算" var1=100 var2=200 var3=`echo "scale=4;$var1/$var2" | bc` echo "$var1 / $var2 = $var3" var4=71 var5=`bc<<EOF scale=4 a1=($var1*$var2) b1=($var3*$var4) a1+b1 EOF` echo "var5=$var5" exit 0
使用test命令
[u]复制代码[/u] 代码如下:
#!/bin/bash #使用test命令 var1=10 var2=100 if [ $var1 -gt $var2 ] then     echo "var1 grate var2" else     echo "var2 grate var1" fi #只能比较整数 test_user=hanxi if [ $USER = $test_user ] then     echo "Welcome $test_user" fi str1=Hanxi str2=hanxi if [ $str1 \> $str2 ] then     echo "$str1 > $str2" else     echo "$str1 < $str2" fi if [ -n $str1 ] then     echo "The string '$str1' is not empty" else     echo "the string '$str1' is empty" fi #检查文件目录 if [ -d $HOME ] then     echo "your Home dir exists"     cd $HOME     ls -a else     echo "there's a problem with your HOME dir" fi pwfile=/etc/shadow if [ -f $pwfile ] then     if [ -r $pwfile ]     then         tail $pwfile     else         echo "Sorry, I'm unable to reas the $pwfile file "     fi else     echo "Sorry, the file $pwfile doesn't exist" fi if [[ $USER == h* ]] then     echo "Hello $USER" else     echo "Sorry, I don't know you" fi
循环语句
[u]复制代码[/u] 代码如下:
#!/bin/bash for file in /home/hanxi/* do     if [ -d "$file" ]     then         echo "$file is a directory"     elif [ -f "$file" ]     then         echo "$file is a file"     fi done var1=10 while [ $var1 -gt 0 ] do     echo $var1     var1=$[ $var1 - 1 ] done var1=100 until [ $var1 -eq 0 ] do     echo $var1     var1=$[ $var1 - 25 ] done #文件数据的循环 IFSOLD=$IFS IFS=$'\n' for entry in `cat /etc/passwd` do     echo "Values in $entry -"     IFS=:     for value in $entry     do         echo " $value"     done done | more for file in /home/hanxi/* do     if [ -d "$file" ]     then         echo "$file is directory"     elif         echo "$file is a file"     fi done > output.txt
读取参数
[u]复制代码[/u] 代码如下:
#!/bin/bash name=`basename $0` echo the commane entered is : $name c_args=$# echo count args:$c_args #取最后一个参数 echo the last parameter is ${!#} echo all parameter: $* echo all parameter: $@ count=1 for param in "$@" do     echo "\$@ parameter #$count = $param"     count=$[ $count + 1 ] done #getopts while getopts :ab:c opt do     case "$opt" in     a) echo "Found the -a option";;     b) echo "Found the -b option, with value $OPTARG";;     c) echo "Found the -c option";;     *) echo "Unknown option : $opt";;     esac done shift $[ $OPTIND - 1 ] count=1 for param in "$@" do     echo "Parameter $count: $param"     count=$[ $count + 1 ] done read -p "Please enter your age:" age echo age:$age if read -t 5 -p "Please enter your name: " name then     echo "Hellp $name,welcome to my script" else     echo     echo "sorry ,too slow!" fi read -n1 -p "Do you want to continue [Y/N]?" answer case $answer in Y | y) echo        echo " fine, continue on...";; N | n) echo        echo OK,Good bye        exit;; esac echo "This is the end of the script" read -s -p "Enter your password: " pass echo echo "Is your password really $pass?" #读取文件 count=1 cat for.txt | while read line do     echo "Line $count: $line"     count=$[ $count+1 ] done echo "Finished processing the file"
重定向文件描述符
[u]复制代码[/u] 代码如下:
#!/bin/bash #永久重定向 exec 9>&2 exec 2>testerror echo "this will in testerror">&2 exec 2<&9 exec 9<&0 exec 0<testin count=1 while read line do     echo "Line #$count:$line"     count=$[ $count + 1 ] done exec 0<&9 #重定向文件描述符 exec 3>&1 exec 1>testout echo "this should store in the output file" echo "along with this line." exec 1>&3 echo "Now things should be back to nomarl" exec 4<&0 exec 0<testin count=1 while read line do     echo "Line #$count:$line"     count=$[ $count + 1 ] done exec 0<&4 read -p "Are you done now?" answer case $answer in Y|y) echo "Goodbye";; N|n) echo "continue..."; esac #创建读写文件描述符 exec 8<> testfile read line <&8 echo "Read:$line" echo "This is a test line" >&8 #关闭文件描述符 exec 8>&- #列出文件描述服 #`/usr/sbin/lsof -a -p $$`|more #禁止命令输出 #2 > /dev/null #创建本地临时文件 tempfile=`mktemp test.XXXXXX` exec 4>$tempfile echo "This is the first line">&3 exec 4>&- #在/temp中创建临时文件 tmpfile=`mktemp -t tmp.XXXXXX` echo "The temp file is located at:$tempfile" cat $tempfile rm -f $tempfile #创建临时文件夹 tmpdir=`mktemp -d dir.XXXXXX` cd $tmpdir tempfile1=`mktemp temp.XXXXXX` ls -l cd .. #记录消息 a=`date | tee testfile;\ cat testfile;\ date | tee -a testfile;\ cat testfile`
信号处理
[u]复制代码[/u] 代码如下:
#!/bin/bash #信号处理 trap "echo 'get a sign'" SIGINT SIGTERM trap "echo byebye" EXIT echo "This is a test program" count=1 while [ $count -le 10 ] do     echo "Loop #$count"     sleep 10     count=$[ $count+1 ] done echo "This is the end of the test program" trap - EXIT#移除捕获 #后台牧师运行 #./test6.sh & #不使用终端的情况下运行脚本 #nohup ./test6.sh & #查看作业 #jobs #重新启动作业 #bg 2(作业序号)//后台 #fg 2//前台 #优先级 #nice -n 10 ./test6.sh #renice 10 -p 25904(进程号) #预计时间运行at命令 #at -f test6.sh 20:00 #batch命令,系统平均负载低于0.8时运行,可以设定时间,比at命令更好 #corn表格可以设定循环运行,格式: #min hour dayofmonth month dayofweek command #每个月第一天运行: #12 16 * * 1 command #每个月最后一天运行: #12 16 * * * if [ `date +%d =d tommorrow` = 01 ] ; then ; command
函数的使用
[u]复制代码[/u] 代码如下:
#!/bin/bash #函数 #使用返回值 function func1 {     read -p "Enter a value: " value     echo $[ $value * 2 ] } result=`func1` echo "the new value is $result" #传递参数 function func2 {     echo $[ $1+$2 ] } result=`func2 2 2` echo "the new result is $result" #局部变量, 递归 function func3 {     if [ $1 -eq 1 ]     then         echo 1     else         local temp=$[ $1-1 ]         local result=`func3 $temp`         echo $[ $result*$1 ]     fi } read -p "Enter value:" value result=`func3 $value` echo "the factorial of $value is: $result" #调用当前目录下到函数库 #. ./myfuncs
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部