一个参数传递问题,求助!

sh/bash/dash/ksh/zsh等Shell脚本
回复
noobcode
帖子: 2
注册时间: 2019-05-28 11:15
系统: CentOS 7
送出感谢: 1 次
接收感谢: 0

一个参数传递问题,求助!

#1

帖子 noobcode » 2019-05-28 11:21

请问一下怎么达到标准输出sda,sdb呢?
代码如下:
#!/bin/sh
DEVS_1=sda,sdb
i=1
echo "${DEVS_$i}"
这样输出一直不对,请求大佬援助shell脚本新手 :Cry
noobcode
帖子: 2
注册时间: 2019-05-28 11:15
系统: CentOS 7
送出感谢: 1 次
接收感谢: 0

Re: 一个参数传递问题,求助!

#2

帖子 noobcode » 2019-05-28 11:56

再比如说,相似的代码:
#!/bin/sh
DEVS_1=sda,sdb
i=1
tmp=DEVS_$i
echo "${tmp}"
echo "${DEVS_1}"的输出内容是不一样的,为什么会出现这种情况呢?
tmp输出为DEVS_1
DEVS_1输出为sda,sdb
头像
astolia
论坛版主
帖子: 4691
注册时间: 2008-09-18 13:11
送出感谢: 1 次
接收感谢: 787 次

Re: 一个参数传递问题,求助!

#3

帖子 astolia » 2019-05-29 11:49

找本国外的shell编程的书系统学一下。你这是没弄懂shell解析命令时的流程。
像你这种要二次展开解析的,要用eval

代码: 全选

#!/bin/sh
DEVS_1=sda,sdb
i=1
eval echo '"${DEVS_'$i'}"'
如果要更好的可读性,可以用bash的数组功能

代码: 全选

#!/bin/bash
DEVS=( "sda,sdb" "sdc" "sdd" )
for i in 0 1 2; do
  echo "${DEVS[$i]}"
done
这些用户感谢了作者 astolia 于这个帖子:
noobcode (2019-05-29 13:52)
评价: 3.7%
回复

回到 “Shell脚本”