Linux之shell(三),shell的编写一
来源:互联网 发布:网络层设备 编辑:程序博客网 时间:2024/06/13 09:19
read -p :提示符
声明变量,declare -i total=$firstnu*$secnu ; //表明是数值型,否则默认是字符串
可以使用var = $(( 运算内容 ))来计算,如echo $(( 13 % 3 )), 小括号内可以有空格,$与(必须挨着
script的执行方式区别:
1 直接执行:./shxx.sh,当前的bash生成一个子进程,然后shell文件在子进程内运行,所以程序中设置的变量父进程不可见
2 source脚本:在父进程中执行,共享变量,如下图
判断一个文件是否存在
ls xlf && echo "exist" || echo "not exist"test -e xlf && echo "exist" || echo "not exist"以上执行正确如果是以下则出现问题ls xlf || echo "not exist" && echo "exist"因为 && 与 || 的执行条件如下:
所以对于ls xlf || echo "not exist" && echo "exist" : 首先如果xlf不存在,则ls xlf返回非0,||后 echo "not exist"执行,返回0,因为它返回0,所以 &&执行输出echo "exist".要注意顺序,一般是 && 再 ||
测试的条件判断:
以下练习scripts:
#/bin/bash#输入用户名,判断文件是否存在,不存在输出信息,程序退出#若存在,则输出是文件还是目录#再判断以下,执行者的身份对这个文件或目录所拥有的权限,并输出权限数据read -p "please input a filename: " filenametest -z $filename && echo "You must input a filename." && exit 0;test ! -e $filename && echo "not exist" && exit 0test -f $filename && echo "$filename is a regular file"test -d $filename && echo "$filename is a directory"test -r $filename && echo "$filename is readalbe"test -w $filename && echo "$filename is writeable"test -x $filename && echo "$filename is execable"
利用中括号也可以进行判断 : [ _"$xxx" _==_ "$xxx"_], _表示空格,中括号两端需要有空格符来分割,上面test所有的判断规则都可以适用,常用在if...then...fi中,使用时需要注意如下内容:
1 在中括号[]内的每个组件都需要有空格键来分割
2 在中括号内的变量,最好以双引号括起来
3 在中括号内的常量,最好以单引号或双引号括起来。
如下例子:
#/bin/bash#让程序输入y或n,对于两种情况分别输出提示信息,#利用[]进行判断,如果不是Y/y/N/n,则显示错误read -p "please input(Y(y) or N(n)): " response[ "$response" == 'Y' -o "$response" == 'y' ] && echo "OK continue" && exit 0[ "$response" == 'N' -o "$response" == 'n' ] && echo "Oh, interrupt!" && exit 0echo "I don;t know what your choice is" && exit 0
shell script的默认变量
$0:程序名,$1:第1个参数 $2:第2个参数....
$#: 代表后接的参数个数
$@: 代表“$1” “ $2” “ $3” “$4”,全部的变量,每个变量是独立的,
$*: 代表“ “$1c$2c$3c$4” ” , c表示的分割符,默认是空格,也是全部的变量,
以下使用例子:
#/bin/bash#执行脚本后显示程序名,共有几个参数,若参数个数小于2,则参数太少,然后输出全部参数内容echo "脚本名称:$0"echo "总共$#个参数"[ $# -lt 2 ] && echo "参数太少" && exit 0echo "全部参数:$@ $*"echo "第一个参数:$1"echo "第二个参数:$2"
shift: 造成参数变量号码右移,如下:
#/bin/bash#执行脚本后显示程序名,共有几个参数,显示shift的功能echo "脚本名称:$0"echo "总共$#个参数"echo "全部参数:$@ "shift #进行一次变量向右移动echo "总共$#个参数"echo "全部参数:$@ "shift 3 #变量向右移动三个echo "总共$#个参数"echo "全部参数:$@ "
0 0
- Linux之shell(三),shell的编写一
- Linux之shell(三),shell的编写二
- linux之shell(一)
- Linux Shell系列教程之(三)Shell变量
- 自己编写的linux shell (修改)
- shell脚本编写(一)
- Linux Shell系列教程之(一)Shell简介
- Linux之Shell学习(一)Shell简介
- linux shell (三)
- 嵌入式Linux的Shell编写
- linux shell脚本的编写
- linux 编写自己的shell
- 编写Linux的shell脚本
- Linux中shell编程需要避免的坑之shell语法篇(三)
- 怎样编写Linux shell script(一)
- Linux中shell编程需要避免的坑之shell语法篇(一)
- Linux --shell(一)
- linux shell(一)
- A Magic Lamp(HDUOJ 3183)
- 数据库—SQL—关系数据库
- XMLPULLPARSER
- 在android studio上使用git向github推送代码
- 水题。。。找因子
- Linux之shell(三),shell的编写一
- 创建物化视图语句主要参数
- [算法竞赛入门经典] UVA 714 - Copying Books
- opencv ubuntu cmake
- hdu-1325 Is It A Tree?
- 开发android客户端需要了解的知识--JSON数据解析
- UIlabel mark
- 【Leet Code】Longest Substring Without Repeating Characters
- c版本观察者模式