Cool Scripts 1:Finding Programs in the PATH

2024-02-17 03:48

本文主要是介绍Cool Scripts 1:Finding Programs in the PATH,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近想把shell好好学习一边,之前的学习都是走马观花式的,这次得认真学习了,不能放过shell中的任何一个细。我看的书是《wricked Cool Shell Scripts》,这本书是英文的,一方面还可以提高一下自己的英语水平,呵呵。不多说了,先看本书中的第一个例子吧。

  1. #!/bin/bash
  2. in_path()
  3. {
  4.     cmd=$1
  5.     path=$2
  6.     retval=1
  7.     oldIFS=$IFS
  8.     IFS=":"
  9.     for directory in $path
  10.     do
  11.         if [ -x $directory/$cmd ]; then
  12.             retval=0
  13.         fi
  14.     done
  15.     IFS=$oldIFS
  16.     return $retval
  17. }
  18. checkForCmdInPath()
  19. {
  20.     var=$1
  21.     if [ "$var" != "" ];then
  22.         if [ "${var%${var#?}}" = "/" ]; then
  23.             if [ ! -x $var ]; then
  24.                 return 1
  25.             fi
  26.         elif ! in_path $var $PATH ; then
  27.             return 2
  28.         fi
  29.     fi
  30.     return 0
  31. }
  32. if [ $# -ne 1 ] ; then
  33.     echo "Usage: $0 command" >&2; exit 1
  34. fi
  35. checkForCmdInPath "$1"
  36. case $? in
  37.     0) echo "$1 found in PATH"                    ;;
  38.     1) echo "$1 not found or not executable"    ;;
  39.     2) echo "$1 not found in PATH"                ;;
  40. esac
  41. exit 0

这个例子的作用是判断一个文件是不是在你的环境变量PATH中,如果在,这个文件是不是具有可执行的权限。
这个脚本,我觉得需要3点要学习的地方。
1.关于if的判断,这个我在网上找了一篇文章,在这篇的前一篇就可以找到。
2.关于重定向“>&2”
>&2 就是将结果的标准输出重定向到标准错误输出当中。有人对&这个不太理解,这个符号可以理解为“The same as”,“和...一样”的意思,所以这句话的意思就是,将标准输出重定向到和标准错误输出一样。如果这条命令当中,之前有定义标准错误输出到一个文件的话,那么这个输出也将会到这个文件当中。
有人也许会问,为什么不去掉“&”这个符号呢?加上不就多次一举么?呵呵,如果去掉“&”的话,"2"在这里就会被当作一个文件来处理了。
3.有关POSIX variable slicing method of ${var%${var#?}}
为了理解这个符号的话,我们需要看两个符号
${var#pattern}和${var%pattern}
先看${var#pattern},这个的意思是说,在var变量中,从做往右开始,去掉pattern开始的那一部分,如果匹配不到,就返回var。
${var%pattern},这个的意思时说,在var变量中,从右往左开始,去掉匹配到pattern开始的那一部分,如果匹配不到,就返回var。
例如:
  1. [goodryb@152 scripts]$ a=abcdefghigk
  2. [goodryb@152 scripts]$ echo ${a%higk}
  3. abcdefg
  4. [goodryb@152 scripts]$ echo ${a%hig}
  5. abcdefghigk
  6. [goodryb@152 scripts]$ echo ${a#abc}
  7. defghigk
  8. [goodryb@152 scripts]$ echo ${a#bad}
  9. abcdefghigk
  10. [goodryb@152 scripts]$




<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(528) | 评论(0) | 转发(0) |
0

上一篇:shell中的if判断

下一篇:sed学习笔记

相关热门文章
  • python 自动化测试平台 Robot ...
  • python 自动化测试平台 Robot ...
  • python snmp 自动化2-在python...
  • 自动化测试详细测试计划 模板...
  • python snmp 自动化3-修改pyth...
  • linux dhcp peizhi roc
  • 关于Unix文件的软链接
  • 求教这个命令什么意思,我是新...
  • sed -e "/grep/d" 是什么意思...
  • 谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议

这篇关于Cool Scripts 1:Finding Programs in the PATH的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/716585

相关文章

Flask 创建app 时候传入的 static_folder 和 static_url_path参数理解

Flask 在创建app的时候 是用 app = Flask(__name__) 来创建的,不传入 static_folder参数的话 ,默认的静态文件的位置是在 static目录下 我们可以进入 Flask的源码里面查看 ctrl+鼠标左键进入 这是Flask的 __init__源码(后面还有一些,我就选了需要的代码)     def __init__(self,import_

(4)SVG-path中的椭圆弧A(绝对)或a(相对)

1、概念 表示经过起始点(即上一条命令的结束点),到结束点之间画一段椭圆弧 2、7个参数 rx,ry,x-axis-rotation,large-arc-flag,sweep-flag,x,y (1)和(2)rx,ry rx:椭圆的x轴半径(即水平半径) ry:椭圆的y轴半径(即垂直半径) 这两个参数好理解,就是椭圆的两条对称轴半径,相等即为圆 也可以写比例,写比例时默认用符合条件

【ArcGIS Pro实操第二期】最小成本路径(Least-cost path)原理及实操案例

ArcGIS Pro实操第一期:最小成本路径原理及实操案例 概述(Creating the least-cost path)1.1 原理介绍1.2 实现步骤1.3 应用案例 2 GIS实操2.1 工具箱简介2.1.1 成本路径(Cost path)2.1.2 成本距离(Cost distance)2.1.2 路径距离(Path Distance) 2.2 案例: 参考 概述(Cre

大数据Java基础-JAVA IO 9】java IO流 (九) Path、Paths、Files的使用

1.NIO的使用说明: >Java NIO (New IO,Non-Blocking IO)是从Java 1.4版本开始引入的一套新的IO API,可以替代标准的Java IO AP。 >NIO与原来的IO同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的(IO是面向流的)、基于通道的IO操作。 >NIO将以更加高效的方式进行文件的读写操作。 >随着 JDK 7 的发布,Java对N

最短路径(Shortest Path)

单源最短路径问题 Dijkstra算法:基于递推的思想设计 未达顶点的最短路径一定是由已到达顶点的最短路径求出 所有顶点之间的最短路径,任意两个顶点之间的最短路径 Floyd算法:只是Dijkstra最短路径算法的加强,其本质还是递推

【ArcGIS Pro实操第一期】最小成本路径(Least-cost path)原理及实操案例

ArcGIS Pro实操第一期:最小成本路径原理及实操案例 概述(Creating the least-cost path)1.1 原理介绍1.2 实现步骤1.3 应用案例 2 GIS实操2.1 工具箱简介2.1.1 成本路径(Cost path)2.1.2 成本距离(Cost distance)2.1.2 路径距离(Path Distance) 2.2 案例: 参考 概述(Cre

[LeetCode] 64. Minimum Path Sum

题:https://leetcode.com/problems/minimum-path-sum/description/ 题目 Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers

[LeetCode] 687. Longest Univalue Path

题:https://leetcode.com/problems/longest-univalue-path/description/ 题目 Given a binary tree, find the length of the longest path where each node in the path has the same value. This path may or may no

C#从入门到精通(22)—Path类的使用

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家!人工智能学习网站 前言: 大家好,我是上位机马工,硕士毕业4年年入40万,目前在一家自动化公司担任软件经理,从事C#上位机软件开发8年以上!我们在开发上位机软件的过程中,有时候需要对文件的路径、文件名、扩展名进行操作,下面进行详细介绍: 1、合并路径 将盘符、文件夹、文件进行合并成最全的文件路径 st

随机算法 - HNU 13348 Finding Lines

Finding Lines Problem's Link:  http://acm.hnu.cn/online/?action=problem&type=show&id=13348&courseid=0   Mean:  给你平面上1e5个点,让你判断是否可以找到一条直线,使得p%的点都在这条直线上。 analyse: 经典的随机算法题。 每次随机出两个点,