Shell脚本中的二维字符串列表

 

一、Shell脚本中的二维字符串列表

有这样一种需求,运行工具完成某项任务, 这项任务有多组参数,每组参数里包含了多个参数(即用多组不同的参数反复运行某个命令,每次命令运行需要指定多个参数),这里的参数就像一个二维字符串数组一样。如下面的CONFIG_PARAMETERS所示,共有两组参数mp4,2000k,vga,4:3和flv,500k, vga,4:3,它们之间用空格隔开,每组参数里有包含了4个参数值,它们之间用逗号隔开。

CONFIG_PARAMETERS=”mp4,2000k,vga,4:3 flv,500k, vga,4:3”

for CONFIG in $CONFIG_PARAMETERS
do

#回显每个参数组
echo $CONFIG
#将原来默认的分隔符备份到OLD_IFS
OLD_IFS=”$IFS”
#将分隔符设置为逗号
IFS=“,”
#以逗号分隔符对$CONFIG进行分割,将结构存入PARAMETERS数组
PARAMETERS=($CONFIG)
#恢复默认的分隔符,需要尽快恢复,如不恢复,可能导致后面命令执行错误
IFS=”$OLD_IFS”
#下面回显4个参数值,${PARAMETERS[@]}表示4个参数的列表可用for进行遍历:for PARAMETER in ${PARAMETERS[@]}
echo ${PARAMETERS[0]}
echo ${PARAMETERS[1]}
echo ${PARAMETERS[2]}
echo ${PARAMETERS[3]}
#这里构成的命令字符串只是为了演示,并不能真正运行起来
cmd=${PARAMETERS[0]}” ”${PARAMETERS[1]}” ”${PARAMETERS[2]}” ”${PARAMETERS[3]}
#执行命令字符串
`$cmd`

done

二、Shell脚本执行过程中的command not found错误

command not found错误可能由以下几种原因导致:
1. 脚本的权限不足,解决办法:chmod a+x script_name.sh或chmod 777 script_name.sh
2. 脚本文件的格式不正确,原因:脚本在windows环境下创建;解决办法:dos2unix scrip_name.sh或利用vim的:set fileformat=unix命令转换文件格式
3. 命令工具不在环境变量指定的路径下或未安装,解决办法:先手动运行脚本验证,可将命令工具拷贝至/usr/local/bin下或将命令工具所在路径添加到/etc/ld.so.conf文件中,然后运行ldconfig命令
4. 字符串分隔符的改变,原因:字符串分割符变化,无法正确分割出命令参数,如原来默认分割符为空格,重置为逗号后则不能解析出命令参数,导致command not found错误。解决办法:新分割符使用完毕后尽早恢复其原来的值。

posted @ 2012-08-21 23:13  dskit  阅读(2675)  评论(0编辑  收藏  举报