博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shell脚本中的二维字符串列表
阅读量:4310 次
发布时间:2019-06-06

本文共 1332 字,大约阅读时间需要 4 分钟。

Technorati 标记: , , , , ,

 

一、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错误。解决办法:新分割符使用完毕后尽早恢复其原来的值。

转载于:https://www.cnblogs.com/dskit/archive/2012/08/21/2649990.html

你可能感兴趣的文章
阻塞、非阻塞的概念和select函数的阻塞功能
查看>>
在Ubuntu64位加安装H3C的INode客户端软件
查看>>
Centos6系统yum升级安装程序库错误解决方法
查看>>
__tostring()和__invoke()的用法
查看>>
作业6
查看>>
es6中promise的用法
查看>>
实现双向绑定
查看>>
java websocket开发的客户端程序
查看>>
Java中关键词之this,super的使用
查看>>
人工智能暑期课程实践项目——智能家居控制(一)
查看>>
前端数据可视化插件(二)图谱
查看>>
kafka web端管理工具 kafka-manager【转发】
查看>>
获取控制台窗口句柄GetConsoleWindow
查看>>
Linux下Qt+CUDA调试并运行
查看>>
3.1.1;例3-1
查看>>
BZOJ4066: 简单题
查看>>
用户添加修改文件的操作
查看>>
C# 2015关键字
查看>>
PostgreSQL 数据库备份
查看>>
Binder
查看>>