linux shell学习笔记1
2009-08-26 11:14
369 查看
文件名为test。输入的命令为./test one two three four
1、$1:代表命令的第一个参数(one)。以此类推,$2为第二个参数(two), $3为第三个参数(three)
2、$#:代表命令的参数个数,以上为4;
3、$*:代表所有参数。echo $*则控制台输出one two three four;
4、select:提供与用户交互的功能。举例如下:
echo "what is your favourite OS?"
select var in "linux" "unix" "windows"; do
break;
done;
echo "you have selected is $var";
以上语句执行后的效果如下:
what is you favourite OS?
1) linux
2) unix
3) windows
#?
当输入1后,则打印:you have selected linux;
5、定义变量:a=13;切记等号左右不能有空格。在输出时,如果写$a,则会显示3,如果写$ab,则会显示b,因为并没有为ab赋值。如果想打印出13b,则应如下写:${a}b。
6、if命令。格式为:
大多数情况下,可以使用测试命令来对条件进行测试,比如可以比较字符串、判断文件是否存在及是否可读等等……通常用" [ ] "来表示 条件测试,注意这里的空格很重要,要确保方括号前后有空格
。
[ -f "somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等
7、&&:这里的 && 就是一个快捷操作符,如果左边的表达式为真则执行右边的语句。[ -x "/bin/ls" ] && echo ls;以上语句如果前面命令为真,则执行ls命令。否则什么都不做。
8、while循环。格式如下:
while .....; do
.....
done
只要测试表达式条件为真,则while循环将一直运行。关键字"break"用来跳出循环,而关键字”continue”则可以跳过一个循环的余下部分,直接跳到下一次循环中。
9、for循环。格式如下:
for var in .....; do
.....
done
for循环会查看一个字符串行表(字符串用空格分隔),并将其赋给一个变量。以下命令会将A B C分别打印到控制台:
for var in A B C; do
echo $var;
done;
9、在向程序传递任何参数之前,程序会扩展通配符和变量。这里所谓的扩展是指程序会把通配符(比如*)替换成适当的文件名,把变量替换成变量值。我们可以使用引号来防止这种扩展,先来看一个例子,假设在当前目录下有两个jpg文件:mail.jpg和tux.jpg
以下命令:echo *.jpg,则会在控制台打印出mail.jpg和tux.jpg。
如果只是想输入"*.jpg",则可以按如下写:'*.jpg',"*.jpg",/*.jpg
10、当要将几行文字传递给一个命令时,用here
documents是一种不错的方法。对每个脚本写一段帮助性的文字是很有用的,此时如果使用here
documents就不必用echo函数一行行输出。Here document以 <<
开头,后面接上一个字符串,这个字符串还必须出现在here
document的末尾。下面是一个例子,在该例子中,我们对多个文件进行重命名,并且使用here documents打印帮助:
help(){
cat << HELP
this is a help topic
HELP
exit 0
}
[ $1 = "-h" ] && help
以上命令说明:如果用户执行脚本时添加了-h参数,则运行help函数。在则help中,则会打印出this is a help topic字符串。
以上的<< HELP为here document。在结尾也要添加一个HELP来结束。记住:结束的HELP一定不能加空格。
11、case命令:case表达式可以用来匹配一个给定的字符串,而不是数字(可别和C语言里的switch...case混淆)
case ... in
...) do something here ;;
esac
以下举例:
-eq 等于则为真。
-ne 不等于则为真。
-gt 大于则为真。
-ge 大于等于则为真。
-lt 小于则为真。
-le 小于等于则为真。
(2)字串测试:
= 等于则为真。
!= 不相等则为真。
-z字串 字串长度伪则为真。
-n字串 字串长度不伪则为真。
(3)文件测试:
-e文件名 如果文件存在则为真。
-r文件名 如果文件存在且可读则为真。
-w文件名 如果文件存在且可写则为真。
-x文件名 如果文件存在且可执行则为真。
-s文件名 如果文件存在且至少有一个字符则为真。
-d文件名 如果文件存在且为目录则为真。
-f文件名 如果文件存在且为普通文件则为真。
-c文件名 如果文件存在且为字符型特殊文件则为真。
-b文件名 如果文件存在且为块特殊文件则为真。
1、$1:代表命令的第一个参数(one)。以此类推,$2为第二个参数(two), $3为第三个参数(three)
2、$#:代表命令的参数个数,以上为4;
3、$*:代表所有参数。echo $*则控制台输出one two three four;
4、select:提供与用户交互的功能。举例如下:
echo "what is your favourite OS?"
select var in "linux" "unix" "windows"; do
break;
done;
echo "you have selected is $var";
以上语句执行后的效果如下:
what is you favourite OS?
1) linux
2) unix
3) windows
#?
当输入1后,则打印:you have selected linux;
5、定义变量:a=13;切记等号左右不能有空格。在输出时,如果写$a,则会显示3,如果写$ab,则会显示b,因为并没有为ab赋值。如果想打印出13b,则应如下写:${a}b。
6、if命令。格式为:
if ....; then .... elif ....; then .... else .... fi
大多数情况下,可以使用测试命令来对条件进行测试,比如可以比较字符串、判断文件是否存在及是否可读等等……通常用" [ ] "来表示 条件测试,注意这里的空格很重要,要确保方括号前后有空格
。
[ -f "somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等
7、&&:这里的 && 就是一个快捷操作符,如果左边的表达式为真则执行右边的语句。[ -x "/bin/ls" ] && echo ls;以上语句如果前面命令为真,则执行ls命令。否则什么都不做。
8、while循环。格式如下:
while .....; do
.....
done
只要测试表达式条件为真,则while循环将一直运行。关键字"break"用来跳出循环,而关键字”continue”则可以跳过一个循环的余下部分,直接跳到下一次循环中。
9、for循环。格式如下:
for var in .....; do
.....
done
for循环会查看一个字符串行表(字符串用空格分隔),并将其赋给一个变量。以下命令会将A B C分别打印到控制台:
for var in A B C; do
echo $var;
done;
9、在向程序传递任何参数之前,程序会扩展通配符和变量。这里所谓的扩展是指程序会把通配符(比如*)替换成适当的文件名,把变量替换成变量值。我们可以使用引号来防止这种扩展,先来看一个例子,假设在当前目录下有两个jpg文件:mail.jpg和tux.jpg
以下命令:echo *.jpg,则会在控制台打印出mail.jpg和tux.jpg。
如果只是想输入"*.jpg",则可以按如下写:'*.jpg',"*.jpg",/*.jpg
10、当要将几行文字传递给一个命令时,用here
documents是一种不错的方法。对每个脚本写一段帮助性的文字是很有用的,此时如果使用here
documents就不必用echo函数一行行输出。Here document以 <<
开头,后面接上一个字符串,这个字符串还必须出现在here
document的末尾。下面是一个例子,在该例子中,我们对多个文件进行重命名,并且使用here documents打印帮助:
help(){
cat << HELP
this is a help topic
HELP
exit 0
}
[ $1 = "-h" ] && help
以上命令说明:如果用户执行脚本时添加了-h参数,则运行help函数。在则help中,则会打印出this is a help topic字符串。
以上的<< HELP为here document。在结尾也要添加一个HELP来结束。记住:结束的HELP一定不能加空格。
11、case命令:case表达式可以用来匹配一个给定的字符串,而不是数字(可别和C语言里的switch...case混淆)
case ... in
...) do something here ;;
esac
以下举例:
while [ -n "$1" ]; do case $1 in -h) help;shift 1;; # function help is called -f) opt_f=1;shift 1;; # variable opt_f is set -l) opt_l=$2;shift 2;; # -l takes an argument -> shift by 2 --) shift;break;; # end of options -*) echo "error: no such option $1. -h for help";exit 1;; *) break;; esac 其中:shift为删除命令参数。 done 12、测试命令 (1)数值测试
-eq 等于则为真。
-ne 不等于则为真。
-gt 大于则为真。
-ge 大于等于则为真。
-lt 小于则为真。
-le 小于等于则为真。
(2)字串测试:
= 等于则为真。
!= 不相等则为真。
-z字串 字串长度伪则为真。
-n字串 字串长度不伪则为真。
(3)文件测试:
-e文件名 如果文件存在则为真。
-r文件名 如果文件存在且可读则为真。
-w文件名 如果文件存在且可写则为真。
-x文件名 如果文件存在且可执行则为真。
-s文件名 如果文件存在且至少有一个字符则为真。
-d文件名 如果文件存在且为目录则为真。
-f文件名 如果文件存在且为普通文件则为真。
-c文件名 如果文件存在且为字符型特殊文件则为真。
-b文件名 如果文件存在且为块特殊文件则为真。
相关文章推荐
- Linux shell脚本学习攻略笔记3
- Linux Shell 学习笔记(三)--Shell变量
- linux shell 脚本命令学习笔记
- Linux Shell 学习笔记(十二)---文件包含
- 学习笔记之Linux Shell脚本教程:30分钟玩转Shell脚本编程
- linux Shell学习笔记2
- Linux学习之道:Linux Shell学习笔记
- linux shell脚本学习笔记一 脚本文件的构建
- Linux Shell脚本学习笔记
- Linux shell 学习笔记
- Linux Shell 学习笔记2:Shell变量
- linux shell学习笔记(一)shell简介
- Linux Shell 《abs_guide》 学习笔记(1)
- linux shell 学习笔记--变量声明与赋值,循环
- 【Shell】【学习笔记】Linux Shell脚本应用(六)
- 【Shell】【学习笔记】Linux Shell脚本应用(十)
- linux Shell学习笔记第三天
- Linux Shell 学习笔记(九)---for/while/util/跳出循环
- linux Shell学习笔记3
- 写得蛮好的linux学习笔记(主要是linux shell命令)