• Texas Instruments matrix-gui-2.0 hacking -- execute_command.sh


    #!/bin/sh
    
    #Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ 
    #
    # 
    # Redistribution and use in source and binary forms, with or without 
    # modification, are permitted provided that the following conditions 
    # are met:
    #
    # Redistributions of source code must retain the above copyright 
    # notice, this list of conditions and the following disclaimer.
    #
    # Redistributions in binary form must reproduce the above copyright
    # notice, this list of conditions and the following disclaimer in the 
    # documentation and/or other materials provided with the   
    # distribution.
    #
    # Neither the name of Texas Instruments Incorporated nor the names of
    # its contributors may be used to endorse or promote products derived
    # from this software without specific prior written permission.
    # 
    # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
    # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
    # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
    # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
    # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
    # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    
    mkdir -p tmp                # 创建tmp目录
    mkdir -p lock               # 创建lock目录
    
    i=0
    
    for item in "$@"            # 迭代传入的参数
    do
    
      if [ $i -eq 0 ]
      then
          
        filename=$item          # 获取文件名
      fi
     
      if [ $i -eq 1 ] 
      then
            
        outputfilename=$item    # 获取输出文件名
      fi
    
      if [ $i -gt 1 ]
      then
        touch "lock/"$item      # 创建lock文件,这个好象是暗个随机生成的数字字符串
    
       fi
     i=`expr $i + 1`            # i++
    
    done
    
    echo "Filename:"$filename
    echo "Output:"$outputfilename
    # 1. 执行程序,程序会卡在这里?以下是run_script.php运行程序:
    #   $script_link = $found_app["Exec"];
    #   # strval(): 用于获取变量对应的字符串值
    #   # rand(): 返回随机整数
    #   $random_string = strval(rand());
    #   $random_string .= strval(rand());
    #   # addslashes(): 在指定的预定义字符前添加反斜杠
    #   $script_command = "./execute_command.sh "".addslashes($script_link). "" ".$random_string.".txt ".$lock_list;
    #   # 获取系统执行结果最后一行
    #   # system()第二个参数:如果提供的return_var参数,则外部命令执行后的
    #   # 返回状态将会被设置到此变量中
    #   $last_line = system($script_command." > /dev/null 2>/dev/null & ", $retval);
    # 2. 对于Qt应用程序,个人觉得这里还是堵塞 
    eval $filename > "tmp/"$outputfilename 2>&1
    
    #Using a more unique string to detect if the script is completed
    # 这行文字重定向到tmp下的输出文件尾
    echo "_?!!MATRIX_SCRIPT_COMPLETED!!?_" >> "tmp/"$outputfilename
    
    # 清一下屏,没找到这条命令
    refresh_screen &
    
    i=0
    for item in "$@"
    do
    
      if [ $i -gt 1 ]
      then
        rm -f "lock/"$item          # 删除lock下的文件
    
       fi
     i=`expr $i + 1`                # i++
    
    done
    
    sleep 20
    rm "tmp/"$outputfilename        # 删除tmp下的文件
  • 相关阅读:
    https://github.com/zyq025/DotNetCoreStudyDemo/blob/main/HttpClientConsoleDemo/Program.cs
    NETCORE TASK多线程的使用
    .NetCore简单封装基于IHttpClientFactory的HttpClient请求
    Netcore中简单使用MemoryCache
    LinQ To Object 基本用法
    SelectMany 和 Select的区别
    List 转换成字符串
    【转】C#中enum的总结
    发个服务端包裹返回值的Response类和用法
    微软企业库 Microsoft Enterprise Library
  • 原文地址:https://www.cnblogs.com/zengjfgit/p/4585275.html
Copyright © 2020-2023  润新知