在 shell 脚本中使用 "set --" 会导致 "bad number"
Using "set --" in shell script results in "bad number"
使用现有的 shell 脚本并尝试了解
正是它在做什么。
前 7 行被提取出来,但是当我 运行 测试时,它失败并出现 "bad number" 错误。
这是脚本中的代码。
#! /bin/ksh
echo
DUMMY_INPUT=
set -- $DUMMY_INPUT
shift
VAR1=;shift;shift
echo $VAR1
这是第一个测试。
> ./runThis.sh arg1 arg2 arg3 arg4 arg5
arg2
./runThis.sh[6]: shift: (null): bad number
根据错误,另一个测试是 运行 仅使用数字,但出现相同的错误。
> ./runThis.sh 1 2 3 4 5 6 7
2
./runThis.sh[6]: shift: (null): bad number
作为测试,"set --" 命令被注释掉,现在可以使用了。
#! /bin/ksh
echo
DUMMY_INPUT=
#set -- $DUMMY_INPUT <-----Comment out this line
shift
VAR1=;shift;shift
echo $VAR1
> ./runThis.sh arg1 arg2 arg3 arg4 arg5
arg2
arg2
> ./runThis.sh 1 2 3 4 5 6 7
2
2
"set"命令的执行是否有误?
知道为什么会失败吗?
+++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++
看完回复,我更明白了....
#! /bin/ksh
echo
DUMMY_INPUT=$@
set -- $DUMMY_INPUT
shift
VAR1=;shift;shift
echo $VAR1
如果我的操作正确,"set" 命令会将输入参数设置为 DUMMY_INPUT 的内容,而 DUMMY_INPUT 在原始代码中仅设置为单个值。
此代码更改将其设置为整个参数字符串。
当您在 ksh
中调用 shift
但没有定义位置参数时,您会收到错误消息
ksh: shift: (null): bad number
例如:
> set -- a b
> echo
a
> shift
> echo
b
> shift
> echo
> shift
ksh: shift: (null): bad number
使用现有的 shell 脚本并尝试了解
正是它在做什么。
前 7 行被提取出来,但是当我 运行 测试时,它失败并出现 "bad number" 错误。
这是脚本中的代码。
#! /bin/ksh
echo
DUMMY_INPUT=
set -- $DUMMY_INPUT
shift
VAR1=;shift;shift
echo $VAR1
这是第一个测试。
> ./runThis.sh arg1 arg2 arg3 arg4 arg5
arg2
./runThis.sh[6]: shift: (null): bad number
根据错误,另一个测试是 运行 仅使用数字,但出现相同的错误。
> ./runThis.sh 1 2 3 4 5 6 7
2
./runThis.sh[6]: shift: (null): bad number
作为测试,"set --" 命令被注释掉,现在可以使用了。
#! /bin/ksh
echo
DUMMY_INPUT=
#set -- $DUMMY_INPUT <-----Comment out this line
shift
VAR1=;shift;shift
echo $VAR1
> ./runThis.sh arg1 arg2 arg3 arg4 arg5
arg2
arg2
> ./runThis.sh 1 2 3 4 5 6 7
2
2
"set"命令的执行是否有误?
知道为什么会失败吗?
+++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++
看完回复,我更明白了....
#! /bin/ksh
echo
DUMMY_INPUT=$@
set -- $DUMMY_INPUT
shift
VAR1=;shift;shift
echo $VAR1
如果我的操作正确,"set" 命令会将输入参数设置为 DUMMY_INPUT 的内容,而 DUMMY_INPUT 在原始代码中仅设置为单个值。
此代码更改将其设置为整个参数字符串。
当您在 ksh
中调用 shift
但没有定义位置参数时,您会收到错误消息
ksh: shift: (null): bad number
例如:
> set -- a b
> echo
a
> shift
> echo
b
> shift
> echo
> shift
ksh: shift: (null): bad number