- 浏览: 311354 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zhou363667565:
看到你的这个配置 有个地方有点问题:
< aop:po ...
spring ibatis 事务配置 -
wo17796452:
[b][/b][i][/i][u][/u]引用[*][img] ...
crowd Jira confluence 集成 -
wo17796452:
<input type="button&quo ...
crowd Jira confluence 集成 -
benbear2008:
这些类图呢?
Spring MVC框架类图与顺序图 -
TTLtry:
谢了 最近学习spring时候 却总是登不上官方网站 很多 ...
Spring 2.5.5 api 帮助文档 chm格式 下载
用来『计算退伍日期还剩几天?』也就是说:
先让使用者输入他们的退伍日期;
再由现在日期比对退伍日期;
由两个日期的比较来显示『还需要几天』才能够退伍的字样。
似乎挺难的样子?其实也不会啦,利用『 date --date="YYYYMMDD" +%s 』就能够达到我们所想要的啰~如果您已经写完了程序,对照底下的写法试看看:
[root@linux scripts]# vi sh10.sh
#!/bin/bash
# Program:
# Tring to calculate your demobilization date at how many days
# later...
# History:
# 2005/08/29 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
# 1. 告知使用者这支程序的用途,并且告知应该如何输入日期格式?
echo "This program will try to calculate :"
echo "How many days about your demobilization date..."
read -p "Please input your demobilization date (YYYYMMDD ex>20050401): " date2
# 2. 测试一下,这个输入的内容是否正确?利用正规表示法啰~
date_d=`echo $date2 |grep '[0-9]\{8\}'`
if [ "$date_d" == "" ]; then
echo "You input the wrong format of date...."
exit 1
fi
# 3. 开始计算日期啰~
declare -i date_dem=`date --date="$date2" +%s`
declare -i date_now=`date +%s`
declare -i date_total_s=$(($date_dem-$date_now))
declare -i date_d=$(($date_total_s/60/60/24))
if [ "$date_total_s" -lt "0" ]; then
echo "You had been demobilization before: " $((-1*$date_d)) " ago"
else
declare -i date_h=$(($(($date_total_s-$date_d*60*60*24))/60/60))
echo "You will be demobilized after $date_d days and $date_h hours."
fi
瞧一瞧,这支程序可以帮您计算退伍日期呢~如果是已经退伍的朋友, 还可以知道已经退伍多久了~哈哈!很可爱吧~利用 date 算出自 1971/01/01 以来的总秒数, 再与目前的总秒数来比对,然后以一天的总秒数 (60*60*24) 为基数去计算总日数, 就能够得知两者的差异了~瞧~全部的动作都没有超出我们所学的范围吧~ ^_^ 还能够避免使用者输入错误的数字,所以多了一个正规表示法的判断式呢~ 这个例子比较难,有兴趣想要一探究竟的朋友,可以作一下课后练习题 关于计算生日的那一题喔!~加油!
--------------------------------------------------------------------------------
利用 case ..... esac 判断
上个小节提到的『 if .... then .... fi 』对于变量的判断中, 是以比对的方式来分辨的,如果符合状态就进行某些行为,并且透过较多层次 ( 就是 elif ... ) 的方式来进行多个变量的程序代码撰写,譬如 sh08.sh 那个小程序,就是用这样的方式来的啰。 好,那么万一我有多个既定的变量内容,例如 sh08.sh 当中,我所需要的变量就是 "hello" 及空字符串两个, 那么我只要针对这两个变量来设定状况就好了对吧?!那么可以使用什么方式来设计呢? 呵呵~就用 case ... in .... esac 吧~,他的语法如下:
case $变量名称 in
"第一个变量内容")
程序段
;;
"第二个变量内容")
程序段
;;
*)
不包含第一个变量内容与第二个变量内容的其它程序执行段
exit 1
;;
esac
要注意的是,这个语法是以 case 为开头,而以 esac 为结尾,啥?为何是 esac 呢?想一想,既然 if 的结尾是 fi ,那么 case 的结尾当然就是将 case 倒着写,自然就是 esac 啰~ ^_^,很好记吧~ 另外,每一个变量内容的程序段最后都需要两个分号 (;;) 来代表该程序段落的结束,这挺重要的喔! 至于为何需要有 * 这个变量内容在最后呢?这是因为,如果使用者不是输入变量内容一或二时, 我们可以告知使用者相关的信息啊!举例来说,我们如果将 sh08.sh 改写的话, 他应该会变成这样喔!
[root@linux scripts]# vi sh08-2.sh
#!/bin/bash
# Program:
# Show "Hello" from $1.... by using case .... esac
# History:
# 2005/08/29 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
case $1 in
"hello")
echo "Hello, how are you ?"
;;
"")
echo "You MUST input parameters, ex> $0 someword"
;;
*)
echo "Usage $0 {hello}"
;;
esac
在上面这个 sh08-2.sh 的案例当中,如果你输入『 sh sh08-2.sh test 』来执行, 那么屏幕上就会出现『Usage sh08-2.sh {hello}』的字样,告知执行者仅能够使用 hello 喔~ 这样的方式对于需要某些固定字符串来执行的变量内容就显的更加的方便呢? 这种方式您真的要熟悉喔!这是因为系统的很多服务的启动 scripts 都是使用这种写法的, 举例来说,我们 Linux 的服务启动放置目录是在 /etc/init.d/ 当中,我已经知道里头有个 syslog 的服务,我想要重新启动这个服务,可以这样做:
/etc/init.d/syslog restart
重点是那个 restart 啦~如果您进入 /etc/init.d/syslog 就会看到他使用的是 case 语法, 并且会规定某些既定的变量内容,你可以直接下达 /etc/init.d/syslog , 该 script 就会告知你有哪些后续接的变量可以使用啰~方便吧! ^_^
一般来说,使用『 case $变量 in 』这个语法中,当中的那个 $变量 大致有两种取得的方式:
直接下达式:例如上面提到的,利用『 script.sh variable 』 的方式来直接给予 $1 这个变量的内容,这也是在 /etc/init.d 目录下大多数程序的设计方式。
交互式:透过 read 这个指令来让使用者输入变量的内容。
这么说或许您的感受性还不高,好,我们直接写个程序来玩玩:让使用者能够输入 one, two, three , 并且将使用者的变量显示到屏幕上,如果不是 one, two, three 时,就告知使用者仅有这三种选择。
[root@linux scripts]# vi sh11.sh
#!/bin/bash
# Program:
# Let user input one, two, three and show in screen.
# History:
# 2005/08/29 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
echo "This program will print your selection !"
# read -p "Input your choice: " choice
# case $choice in
case $1 in
"one")
echo "Your choice is ONE"
;;
"two")
echo "Your choice is TWO"
;;
"three")
echo "Your choice is THREE"
;;
*)
echo "Usage {one|two|three}"
;;
esac
此时,您可以使用『 sh sh11.sh two 』的方式来下达指令,就可以收到相对应的响应了。 上面使用的是直接下达的方式,而如果使用的是交互式时,那么将上面第 10, 11 行的 "#" 拿掉, 并将 12 行加上批注 (#),就可以让使用者输入参数啰~这样是否很有趣啊?!
--------------------------------------------------------------------------------
利用 function 功能
什么是『函数 (function)』功能啊?简单的说,其实, 函数可以在 shell script 当中做出一个类似自订执行指令的东西,最大的功能是, 可以简化我们很多的程序代码~举例来说,上面的 sh11.sh 当中,每个输入结果 one, two, three 其实输出的内容都一样啊~那么我就可以使用 function 来简化了! function 的语法是这样的:
function fname() {
程序段
}
那个 fname 就是我们的自订的执行指令名称~而程序段就是我们要他执行的内容了。 要注意的是,在 shell script 当中, function 的设定一定要在程序的最前面, 这样才能够在执行时被找到可用的程序段喔!好~我们将 sh11.sh 改写一下:
[root@linux scripts]# vi sh11-2.sh
#!/bin/bash
# Program:
# Let user input one, two, three and show in screen.
# History:
# 2005/08/29 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
function printit(){
echo -n "Your choice is "
}
echo "This program will print your selection !"
case $1 in
"one")
printit; echo $1 | tr 'a-z' 'A-Z'
;;
"two")
printit; echo $1 | tr 'a-z' 'A-Z'
;;
"three")
printit; echo $1 | tr 'a-z' 'A-Z'
;;
*)
echo "Usage {one|two|three}"
;;
esac
以上面的例子来说,我做了一个函数名称为 printif ,所以,当我在后续的程序段里面, 只要执行 printit 的话,就表示我的 shell script 要去执行『 function printit .... 』 里面的那几个程序段落啰! 当然啰,上面这个例子举得太简单了,所以您不会觉得 function 有什么好厉害的, 不过,如果某些程序代码一再地在 script 当中重复时,这个 function 可就重要的多啰~ 不但可以简化程序代码,而且可以做成类似『模块』的玩意儿,真的很棒啦!
另外, function 也是拥有内建变量的~他的内建变量与 shell script 很类似, 函数名称代表示 $0 ,而后续接的变量也是以 $1, $2... 来取代的~ 这里很容易搞错喔~因为『 function fname() { 程序段 } 』内的 $0, $1... 等等与 shell script 的 $0 是不同的。以上面 sh11-2.sh 来说,假如我下达:『 sh sh11-2.sh one 』 这表示在 shell script 内的 $1 为 "one" 这个字符串。但是在 printit() 内的 $1 则与这个 one 无关。 我们将上面的例子再次的改写一下,让您更清楚!
[root@linux scripts]# vi sh11-3.sh
#!/bin/bash
# Program:
# Let user input one, two, three and show in screen.
# History:
# 2005/08/29 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
function printit(){
echo "Your choice is $1"
}
echo "This program will print your selection !"
case $1 in
"one")
printit 1
;;
"two")
printit 2
;;
"three")
printit 3
;;
*)
echo "Usage {one|two|three}"
;;
esac
在上面的例子当中,如果您输入『 sh sh11-3.sh one 』就会出现『 Your choice is 1 』的字样~ 为什么是 1 呢?因为在程序段落当中,我们是写了『 printit 1 』那个 1 就会成为 function 当中的 $1 喔~ 这样是否理解呢? function 本身其实比较困难一点,如果您还想要进行其它的撰写的话。 不过,我们仅是想要更加了解 shell script 而已,所以,这里看看即可~了解原理就好啰~ ^_^
--------------------------------------------------------------------------------
循环 (loop)
除了 if...then...fi 这种条件判断式之外,循环可能是程序当中最重要的一环了~ 循环可以不断的执行某个程序段落,直到使用者设定的条件达成为止。 所以,重点是那个『条件的达成』是什么。底下我们就来谈一谈:
--------------------------------------------------------------------------------
while do done, until do done
一般来说,循环最常见的就是底下这两种状态了:
while [ condition ]
do
程序段落
done
这种方式中, while 是『当....时』,所以,这种方式说的是『当 condition 条件成立时,就进行循环,直到 condition 的条件不成立才停止』的意思。
until [ condition ]
do
程序段落
done
这种方式恰恰与 while 相反,它说的是『当 condition 条件成立时,就终止循环, 否则就持续进行循环的程序段。』是否刚好相反啊~我们以 while 来做个简单的练习好了。 假设我要让使用者输入 yes 或者是 YES 才结束程序的执行,否则就一直进行告知使用者输入字符串。
[root@linux scripts]# vi sh12.sh
#!/bin/bash
# Program:
# Use loop to try find your input.
# History:
# 2005/08/29 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
while [ "$yn" != "yes" ] && [ "$yn" != "YES" ]
do
read -p "Please input yes/YES to stop this program: " yn
done
上面这个例题的说明是『当 $yn 这个变量不是 "yes" 且 $yn 也不是 "YES" 时,才进行循环内的程序。』 而如果 $yn 是 "yes" 或 "YES" 时,就会离开循环啰~那如果使用 until 呢?呵呵有趣啰~ 他的条件会变成这样:
[root@linux scripts]# vi sh12-2.sh
#!/bin/bash
# Program:
# Use loop to try find your input.
# History:
# 2005/08/29 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
until [ "$yn" == "yes" ] || [ "$yn" == "YES" ]
do
read -p "Please input yes/YES to stop this program: " yn
done
仔细比对一下这两个东西有啥不同喔! ^_^再来,如果我想要计算 1+2+3+....+100 这个数据呢? 利用循环啊~他是这样的:
[root@linux scripts]# vi sh13.sh
#!/bin/bash
# Program:
# Try to use loop to calculate the result "1+2+3...+100"
# History:
# 2005/08/29 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
s=0
i=0
while [ "$i" != "100" ]
do
i=$(($i+1))
s=$(($s+$i))
done
echo "The result of '1+2+3+...+100' is ==> $s"
嘿嘿!当您执行了『 sh sh13.sh 』之后,就可以得到 5050 这个数据才对啊!这样瞭呼~ 那么让您自行做一下,如果想要让使用者自行输入一个数字,让程序由 1+2+... 直到您输入的数字为止, 该如何撰写呢?应该很简单吧?!答案可以参考一下习题练习里面的一题喔!
--------------------------------------------------------------------------------
for...do....done
相对于 while, until 的循环方式是必须要『符合某个条件』的状态, for 这种语法,则是『 已经知道要进行几次循环』的状态!他的语法是:
for (( 初始值; 限制值; 执行步阶 ))
do
程序段
done
这种语法适合于数值方式的运算当中,在 for 后面的括号内的三串内容意义为:
初始值:某个变量在循环当中的起始值,直接以类似 i=1 设定好;
限制值:当变量的值在这个限制值的范围内,就继续进行循环。例如 i $s"
一样也是很简单吧!利用这个 for 则可以直接限制循环要进行几次呢!这么好用的东西难道只能在数值方面动作? 当然不是啦~我们还可以利用底下的方式来进行非数字方面的循环运作喔!
for $var in con1 con2 con3 ...
do
程序段
done
以上面的例子来说,这个 $var 的变量内容在循环工作时:
第一次循环时, $var 的内容为 con1 ;
第二次循环时, $var 的内容为 con2 ;
第三次循环时, $var 的内容为 con3 ;
....
我们可以做个简单的练习。假设我有三种动物,分别是 dog, cat, elephant 三种, 我想每一行都输出这样:『There are dogs...』之类的字样,则可以:
[root@linux scripts]# vi sh15.sh
#!/bin/bash
# Program:
# Using for .... loop to print 3 animal
# History:
# 2005/08/29 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
for animal in dog cat elephant
do
echo "There are ""$animal""s.... "
done
很简单是吧! ^_^。好了,那么如果我想要让使用者输入某个目录, 然后我找出某目录内的文件名的权限呢?又该如何是好?呵呵!可以这样做啦~
[root@linux scripts]# vi sh16.sh
#!/bin/bash
# Program:
# let user input a directory and find the whole file's permission.
# History:
# 2005/08/29 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
# 1. 先看看这个目录是否存在啊?
read -p "Please input a directory: " dir
if [ "$dir" == "" ] || [ ! -d "$dir" ]; then
echo "The $dir is NOT exist in your system."
exit 1
fi
# 2. 开始测试档案啰~
filelist=`ls $dir`
for filename in $filelist
do
perm=""
test -r "$dir/$filename" && perm="$perm readable"
test -w "$dir/$filename" && perm="$perm writable"
test -x "$dir/$filename" && perm="$perm executable"
echo "The file $dir/$filename's permission is $perm "
done
呵呵!很有趣的例子吧~利用这种方式,您可以很轻易的来处理一些档案的特性呢~ 我们循环就介绍到这里了~其它更多的应用,就得视您的需求来玩啰~。
--------------------------------------------------------------------------------
shell script 的追踪与 debug
scripts 在执行之前,最怕的就是出现问题了!那么我们如何 debug 呢?有没有办法不需要透过直接执行该 scripts 就可以来判断是否有问题呢!?呵呵! 当然是有的!我们就直接以 bash 的相关参数来进行判断吧!
[root@linux ~]# sh [-nvx] scripts.sh
参数:
-n :不要执行 script,仅查询语法的问题;
-v :再执行 sccript 前,先将 scripts 的内容输出到屏幕上;
-x :将使用到的 script 内容显示到屏幕上,这是很有用的参数!
范例:
范例一:测试 sh16.sh 有无语法的问题?
[root@linux ~]# sh -n sh16.sh
# 若语法没有问题,则不会显示任何信息!
范例二:将 sh15.sh 的执行过程全部列出来~
[root@linux ~]# sh -x sh15.sh
+ PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/home/vbird/bin
+ export PATH
+ for animal in dog cat elephant
+ echo 'There are dogs.... '
There are dogs....
+ for animal in dog cat elephant
+ echo 'There are cats.... '
There are cats....
+ for animal in dog cat elephant
+ echo 'There are elephants.... '
There are elephants....
# 使用 -x 真的是追踪 script 的好方法,他可以将所有有执行的程序段在执行前列出来,
# 如果是程序段落,则输出时,最前面会加上 + 字号,表示他是程序代码而已,
# 实际的输出则与 standard output 有关啊~如上所示。
在上面的范例二当中,我们可以透过这个简单的参数 -x 来达成 debug 的目的,这可是一个不可多得的参数, 通常如果您执行 script 却发生问题时,利用这个 -x 参数,就可以知道问题是发生在哪一行上面了!
熟悉 sh 的用法,将可以使您在管理 Linux 的过程中得心应手!至于在 Shell scripts 的学习方法上面,需要『多看、多模仿、并加以修改成自己的样式!』 是最快的学习手段了!网络上有相当多的朋友在开发一些相当有用的 scripts ,若是您可以将对方的 scripts 拿来,并且改成适合自己主机的样子!那么学习的效果会是最快的呢!
另外,我们 Linux 系统本来就有很多的启动 script ,如果您想要知道每个 script 所代表的功能是什么? 可以直接以 vi 进入该 script 去查阅一下,通常立刻就知道该 script 的目的了。 举例来说,我们的 Linux 里头有个文件名称为: /etc/init.d/portmap ,这个 script 是干嘛用的? 利用 vi 去查阅最前面的几行字,他出现如下信息:
# description: The portmapper manages RPC connections, which are used by \
# protocols such as NFS and NIS. The portmap server must be \
# running on machines which act as servers for protocols which \
# make use of the RPC mechanism.
# processname: portmap
简单的说,他是被用在 NFS 与 NIS 上面的一个启动 RPC 的 script , 然后我们再利用 http://www.google.com.tw 去搜寻一下 NFS, NIS 与 RPC , 立刻就能够知道这个 script 的功能啰~所以,下次您发现不明的 script 时, 如果是系统提供的,那么利用这个检查的方式,一定可以约略了解的啦! 加油的啰~ ^_^
另外,本章所有的范例都可以在 http://linux.vbird.org/linux_basic/0340bashshell-scripts/scripts.tgz 里头找到喔!加油~
--------------------------------------------------------------------------------
本章习题练习
( 要看答案请将鼠标移动到『答:』底下的空白处,按下左键圈选空白处即可察看 )
请建立一支 script ,当你执行该 script 的时候,该 script 可以显示: 1. 你目前的身份 (用 whoami ) 2. 你目前所在的目录 (用 pwd)
#!/bin/bash
echo -e "Your name is ==> `whoami`"
echo -e "The current directory is ==> `pwd`"
请自行建立一支程序,该程序可以用来计算『您还有几天可以过生日』啊??
#!/bin/bash
read -p "Pleas input your birthday (MMDD, ex> 0709): " bir
now=`date +%m%d`
if [ "$bir" == "$now" ]; then
echo "Happy Birthday to you!!!"
elif [ "$bir" -gt "$now" ]; then
year=`date +%Y`
total_d=$(($((`date --date="$year$bir" +%s`-`date +%s`))/60/60/24))
echo "Your birthday will be $total_d later"
else
year=$((`date +%Y`+1))
total_d=$(($((`date --date="$year$bir" +%s`-`date +%s`))/60/60/24))
echo "Your birthday will be $total_d later"
fi
让使用者输入一个数字,程序可以由 1+2+3... 一直累加到使用者输入的数字为止。
#!/bin/bash
read -p "Please input an integer number: " number
i=0
s=0
while [ "$i" != "$number" ]
do
i=$(($i+1))
s=$(($s+$i))
done
echo "the result of '1+2+3+...$number' is ==> $s"
撰写一支程序,他的作用是: 1.) 先查看一下 /root/test/logical 这个名称是否存在; 2.) 若不存在,则建立一个档案,使用 touch 来建立,建立完成后离开; 3.) 如果存在的话,判断该名称是否为档案,若为档案则将之删除后建立一个档案,档名为 logical ,之后离开; 4.) 如果存在的话,而且该名称为目录,则移除此目录!
#!/bin/bash
if [ ! -e logical ]; then
touch logical
echo "Just make a file logical"
exit 1
elif [ -e logical ] && [ -f logical ]; then
rm logical
mkdir logical
echo "remove file ==> logical"
echo "and make directory logical"
exit 1
elif [ -e logical ] && [ -d logical ]; then
rm -rf logical
echo "remove directory ==> logical"
exit 1
else
else
echo "Does here have anything?"
fi
我们知道 /etc/passwd 里面以 : 来分隔,第一栏为账号名称。请写一只程序,可以将 /etc/passwd 的第一栏取出,而且每一栏都以一行字符串『The 1 account is "root" 』来显示,那个 1 表示行数。
#!/bin/bash
accounts=`cat /etc/passwd | cut -d':' -f1`
for account in $accounts
do
declare -i i=$i+1
echo "The $i account is \"$account\" "
done
发表评论
-
git macos 配置
2011-10-04 12:33 1740git有4种协议方式建git服务器,分别是本地协议、SSH协议 ... -
Java加密技术(十)
2011-05-08 22:31 900在Java 加密技术(九)中,我们使用自签名证书完成了认证。接 ... -
Java加密技术(九)
2011-05-08 22:30 857在Java加密技术(八)中,我们模拟了一个基于RSA非对称加密 ... -
Java加密技术(八)
2011-05-08 22:28 871在构建Java代码实现前,我们需要完成证书的制作。 1.生成k ... -
Java加密技术(七)
2011-05-08 22:26 823ECC ECC-Elliptic Curves Cryptog ... -
Java加密技术(六)
2011-05-08 22:24 811接下来我们介绍DSA数字签名,非对称加密的另一种实现。 DSA ... -
Java加密技术(五)
2011-05-08 22:23 713接下来我们分析DH加 ... -
Java加密技术(四)
2011-05-08 22:21 772接下来我们介绍典型的 ... -
Java加密技术(三)
2011-05-08 22:19 972除了DES,我们还知道有DESede(TripleDES,就 ... -
Java加密技术(二)
2011-05-08 22:18 823接下来我们介绍对称加密算法,最常用的莫过于DES数据加密算法 ... -
Java加密技术(一)
2011-05-08 22:16 811加密解密,曾经是我一个毕业设计的重要组件。在工作了多年以后回想 ... -
java并发学习之五:读JSR133笔记(持续更新中)
2011-04-11 07:02 880在写线程池的时候,遇 ... -
java并发学习之四:JSR 133 (Java Memory Model) FAQ【译】
2011-04-11 07:01 859Jsr133地址:http://www ... -
java并发学习之三:非阻塞漫想,关于环岛与地铁
2011-04-11 07:00 861到过北京上地的都会知道,上地城铁往西走有一个很大的上地环岛,旁 ... -
java并发学之二
2011-04-11 06:59 902在看书的时候看到了一个观察死锁的工具TDA(Thread Du ... -
ava并发学习之二:线程池
2011-04-11 06:58 752第二步,是实现一个线程池 因为之前看书的时候留了个心眼,看线程 ... -
java并发学习之一:CountDownLatch
2011-04-11 06:57 720看了几个月的《Java Concurrency in Prac ... -
CAS
2011-04-03 20:08 1096需求描述1:大家知道J2EE应用程序都可以用类型以下形式进行保 ... -
定制TortoiseSVN安装包
2011-03-26 07:05 1099TortoiseSVN的MSI安装包是使用Windows ... -
编译TortoiseSVN源代码
2011-03-26 07:04 1250装编译器软件 A. 你需要 VS.NET2005 (或 ...
相关推荐
学习unix shell编程不错的材料。
书籍的第二版名为《Wicked Cool Shell Scripts, 2nd Edition》,保留了第一版的核心理念,同时新增了更多的脚本和功能。书籍由William Pollock出版社出版,包括了技术审查者和其他相关人员的名字,显示了该书在技术...
第十三章、学习 Shell Scripts最近更新日期:2009/02/18如果你真的很想要走信息这条路,并且想要好好的管理好属于你的主机,那么,别说鸟哥不告诉
"cdr-rep shell scripts" 是一个与 Informix 数据库管理系统相关的脚本集合,主要用于处理、管理和报告 Informix 数据。在 IT 领域,尤其是在数据库管理中,shell 脚本通常被用来自动化日常任务,如数据备份、监控、...
学习Shell Scripts的原因** 学习Shell脚本的原因主要在于以下几点: - **自动化日常任务**:通过编写脚本,你可以将重复性的任务集成到一个可执行文件中,减少手动操作,提高效率。 - **系统管理**:在Linux环境...
在本集合中,我们有机会学习到各种基础和高级的Shell脚本编写技巧。 1. **Shell脚本基础**:首先,我们需要了解Bash(Bourne-Again SHell)是最常见的Shell类型,它是Linux默认的Shell。基础概念包括变量、条件语句...
学习Shell脚本的过程中,还会涉及一些重要的命令,如`cd`改变目录,`ls`列出目录内容,`mkdir`创建目录,`rm`删除文件或目录,`cp`复制文件或目录,`mv`移动或重命名文件或目录。 `Shell.pdf`可能包含了关于Bash ...
总的来说,"shellscripts:暴力框架的 Shellscripts"是一个关于利用Shell脚本增强Chisimba框架功能的学习资源。通过研究和实践这些脚本,用户可以提升自己的Shell编程技能,并能够更好地利用Chisimba框架进行自动化...
通过学习和实践"ShellScripts2009",你可以提升对Linux系统的掌控能力,更好地利用Shell脚本提高工作效率。无论你是系统管理员还是开发者,掌握Shell脚本都将为你打开一扇通往自动化和效率提升的大门。
学习和使用Shell脚本,需要掌握基本的Shell语法,如变量、条件语句、循环、函数等。同时,熟悉Linux命令行工具也是必不可少的,因为许多脚本都是基于这些工具构建的。 总的来说,这个"Shell_Scripts.zip"压缩包为...
"shellscripts:ITN170"可能指的是一个关于Shell脚本编程的课程或者项目,其中包含了对Shell脚本深入学习和实践的内容。在这个名为"shellscripts-master"的压缩包文件中,我们可以期待找到一系列关于Shell脚本编写、...
二、Shell脚本基本结构 一个基本的Shell脚本通常包含以下部分: - shebang(#!/bin/bash):位于脚本文件的开头,告诉系统使用哪个Shell解释器来执行脚本。 - 变量声明:用于存储数据的容器,如`VAR="Hello World"`...
标题“sample_shellscripts”暗示了这是一个关于Shell脚本的示例集合。Shell脚本是Linux或Unix操作系统中的一种编程方式,它允许用户通过命令行执行一系列操作,从而自动化日常任务。在这一压缩包中,"sample_shell...
这个压缩包文件"shellScripts:只是一些用于测试的shell脚本"显然包含了一系列用于实验和学习目的的Shell脚本。以下是对这些脚本可能涉及的知识点的详细解释: 1. **Shell基础**:Shell是操作系统提供的一个命令行...
通知频道: 赞赏码:特别声明:本仓库发布的脚本项目中涉及的任何解锁和解密分析脚本,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确,可以和有效,请根据情况自行判断。本项目内所有资源文件,...
这个名为"shellscripts"的压缩包显然包含了几个这样的脚本,专门用于将文件转换成mp4格式,以及检查和修复mp3文件。让我们深入探讨一下shell脚本及其在这些特定任务中的应用。 首先,让我们关注将文件转换为mp4格式...
在"custom-scripts-master"这个压缩包中,你可能会找到各种实用的Shell脚本示例,学习并理解它们的逻辑和功能,有助于提升你在Linux环境下的操作效率。记得阅读脚本的注释,了解作者的意图和脚本的工作方式。同时,...