linux shell学习笔记1
来源:互联网 发布:广电机顶盒安装软件 编辑:程序博客网 时间:2024/05/22 15:17
文件名为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命令。格式为:
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、当要将几行文字传递给一个命令时,用heredocuments是一种不错的方法。对每个脚本写一段帮助性的文字是很有用的,此时如果使用heredocuments就不必用echo函数一行行输出。Here document以 <<开头,后面接上一个字符串,这个字符串还必须出现在heredocument的末尾。下面是一个例子,在该例子中,我们对多个文件进行重命名,并且使用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学习笔记1
- linux shell学习笔记1
- linux shell 学习笔记1
- Linux Shell学习笔记1
- linux Shell学习笔记1
- Linux Shell学习笔记1:Linux入门
- Linux Shell学习笔记
- linux shell学习笔记
- linux shell学习笔记
- Linux Shell 学习笔记
- linux shell 学习笔记
- linux-shell学习笔记
- Linux Shell学习笔记
- linux shell 学习笔记
- linux shell学习笔记
- Linux shell学习笔记
- Linux-shell学习笔记
- Linux Shell 学习笔记
- 代理模式
- 性能监控的简单实现
- 中国弱智现象大集合
- connect by应用
- 常用DOS命令讲解
- linux shell学习笔记1
- 移植嵌入式Linux到ARM处理器S3C241
- TCHAR ,UNICODE,CHAR,wchar_t 来龙去脉 (转)
- cmd中if命令讲解
- 博客成立
- windows系统盘下结构
- android: 制作system.img(yaffs2) 镜像
- asp.net页面传值方法
- VS2005安装项目生成出现非法字符错误