shell中无法对输入参数$@的值进行调整

清钟沁桐 2011-11-26 01:20:32
#测试shift命令(x_shift.sh)
until [ $# -eq 0 ]
do
echo "first argv: $1 : $#"
shift 1
$@="sdasd dd d d d d d d d"
done

比如上面的$@,并不能调整为"sdasd dd d d d d d d d"
...全文
94 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
清钟沁桐 2011-12-14
  • 打赏
  • 举报
回复
是的,可以通过子函数的方式传递参数,从而调整这些参数值
askandstudy 2011-11-27
  • 打赏
  • 举报
回复
能获取到参数值就可以做你想要做的操作了,可以以任意方式组合参数来调用别的脚本命令之类的东西,重新赋值意义在哪里?
livesguan 2011-11-27
  • 打赏
  • 举报
回复
可以换种方式,不一定要这样玩.
panghuhu250 2011-11-27
  • 打赏
  • 举报
回复
不懂你为什么一定要给$@赋值.
清钟沁桐 2011-11-27
  • 打赏
  • 举报
回复
那能否自己给他赋值呢?
panghuhu250 2011-11-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhongyunde 的回复:]
#测试shift命令(x_shift.sh)
until [ $# -eq 0 ]
do
echo "first argv: $1 : $#"
shift 1
$@="sdasd dd d d d d d d d"
done

比如上面的$@,并不能调整为"sdasd dd d d d d d d d"
[/Quote]

shell程序的参数是你调用程序时,shell根据你命令行的参数建立的,不要自己给他赋值.

拿你的例子来说:

/tmp/ cat test_shift.sh
#测试shift命令(x_shift.sh)
until [ $# -eq 0 ]
do
echo "first argv: $1 : $#"
shift 1
done

/tmp/ sh test_shift.sh sdasd dd d d d d d d d
first argv: sdasd : 9
first argv: dd : 8
first argv: d : 7
first argv: d : 6
first argv: d : 5
first argv: d : 4
first argv: d : 3
first argv: d : 2
first argv: d : 1


insulted 2011-11-26
  • 打赏
  • 举报
回复
他估计是想这样输入:sdasd dd d d d d d d d
期望得到这样的输出:
sdasd dd d d d d d d d
dd d d d d d d d
d d d d d d d
d d d d d d
d d d d d
d d d d
d d d
d d
d

askandstudy 2011-11-26
  • 打赏
  • 举报
回复
看不懂你的问题,你直接说期望输入什么参数然后得到什么样的结果或输出就行了。

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧