zoukankan      html  css  js  c++  java
  • 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错误。解决办法:新分割符使用完毕后尽早恢复其原来的值。

  • 相关阅读:
    tomcat配置虚拟主机
    android widget 开发实例 : 桌面便签程序的实现具体解释和源代码 (上)
    Delphi 2007体验!
    ACE定时器
    Unity--关于优化方面的那些事儿(一)
    LTP介绍
    Java正則表達式入门
    Spring整合Hibernate的步骤
    ThreadPool.QueueUserWorkItem的性能问题
    用Bootstrap 写了个站点
  • 原文地址:https://www.cnblogs.com/dskit/p/2649990.html
Copyright © 2011-2022 走看看