Linux之shell(三),shell的编写一

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: " filename
test -z $filename && echo "You must input a filename." && exit 0;

test ! -e $filename && echo "not exist" && exit 0

test -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 0
echo "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 0
echo "全部参数:$@  $*"
echo "第一个参数:$1"
echo "第二个参数:$2"

shift: 造成参数变量号码右移,如下:

#/bin/bash
#执行脚本后显示程序名,共有几个参数,显示shift的功能

echo "脚本名称:$0"
echo "总共$#个参数"
echo "全部参数:$@ "
shift   #进行一次变量向右移动

echo "总共$#个参数"
echo "全部参数:$@ "
shift 3  #变量向右移动三个

echo "总共$#个参数"
echo "全部参数:$@ "



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值