linux脚本中option,linux新手关于shell脚本一个小问题,请教各位高手

问题一:

这是一个在脚本中使用getopt命令格式化为脚本输入任意命令行选项或参数的问题

代码如下:

#!/bin/bash

set -- 'getopt -q ab:c "$@"'

while [ -n "$1" ]

do

case "$1" in

-a) echo "Found the -a option";;

-b) param="$2"

echo "Found the -b option, with parameter value $param";;

--) shift

break;;

*) echo "$1 is not an option"

esac

shift

done

count=1

for param in "$@"

do

echo "Parameter $count: $param"

count=$[$count + 1]

done

如果程序正确那么如果输入:-ab test -- test1

结果应该为:

Found the -a option

Found the -b option, with parameter value test

Parameter 1: test1

但是我得到的结果却是:getopt -q ab:c "$@" is not an option

请高手解释下为什么会出现这种情况。

问题二:

按照我的理解是,输入自己写的一个脚本的绝对路径就可以执行该脚本,比如:./test1,但是对于下面这个脚本:

#!/bin/bash

name='basename $0'

if [ $name = "addem" ]

then

total=$[ $1+$2 ]

elif [ $name = "multem" ]

then

total=$[ $1-$2 ]

fi

echo The calculated value is $total

(上面这段代码写在test1文件中)

在./目录中,没有addem文件,也没有multem文件,为什么./addem 2 3 或者./multem 4 3可以执行呢??

希望各位能够给小弟指点一下,小弟在此先谢过了。

|

问题一:

这是一个在脚本中使用getopt命令格式化为脚本输入任意命令行选项或参数的问题

代码如下:

#!/bin/bash

set -- 'getopt -q ab:c "$@"'

while [ -n "$1" ]

----------------------------

错误就在这里! set -- 'getopt -q ab:c "$@"'

你看书时候要注意了 这里不能用单引号' 要用反单引号`

改成

set -- `getopt -q ab:c "$@"`

|

用反引号

表示执行``里的命令

相关推荐

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值