当前位置: 技术问答>linux和unix
linux新手关于shell脚本一个小问题,请教各位高手
来源: 互联网 发布时间:2016-10-26
本文导语: 问题一: 这是一个在脚本中使用getopt命令格式化为脚本输入任意命令行选项或参数的问题 代码如下: #!/bin/bash set -- 'getopt -q ab:c "$@"' while [ -n "$1" ] do case "$1" in -a) echo "Found the -a option";; ...
问题一:
这是一个在脚本中使用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" ]
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 "$@"`
这是一个在脚本中使用getopt命令格式化为脚本输入任意命令行选项或参数的问题
代码如下:
#!/bin/bash
set -- 'getopt -q ab:c "$@"'
while [ -n "$1" ]
----------------------------
错误就在这里! set -- 'getopt -q ab:c "$@"'
你看书时候要注意了 这里不能用单引号' 要用反单引号`
改成
set -- `getopt -q ab:c "$@"`
|
用反引号
表示执行``里的命令
表示执行``里的命令