最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用來檢測輸入的選項$1是否在PATH中的shell腳本

 更新時間:2016年08月14日 11:26:49   投稿:mdxy-dxy  
今天無意中發(fā)現(xiàn)一本挺有意思的shell編程的書,是e文的,內(nèi)容是101個shell案例,堅持明天看一個,寫點心得

今天無意中發(fā)現(xiàn)一本挺有意思的shell編程的書,是e文的,內(nèi)容是101個shell案例,堅持明天看一個,寫點心得。
下面是例子001:

#!/bin/sh
# inpath - Verifies that a specified program is either valid as is,
#  or that it can be found in the PATH directory list.

in_path()
{
 # Given a command and the PATH, try to find the command. Returns
 # 0 if found and executable, 1 if not. Note that this temporarily modifies
 # the IFS (input field separator) but restores it upon completion.

 cmd=$1    path=$2     retval=1
 oldIFS=$IFS  IFS=":"

 for directory in $path
 do
  if [ -x $directory/$cmd ] ; then
   retval=0   # if we're here, we found $cmd in $directory
  fi
 done
 IFS=$oldIFS
 return $retval
}

checkForCmdInPath()
{
 var=$1

 # The variable slicing notation in the following conditional
 # needs some explanation: ${var#expr} returns everything after
 # the match for 'expr' in the variable value (if any), and
 # ${var%expr} returns everything that doesn't match (in this
 # case, just the very first character. You can also do this in
 # Bash with ${var:0:1}, and you could use cut too: cut -c1.

 if [ "$var" != "" ] ; then
  if [ "${var%${var#?}}" = "/" ] ; then
   if [ ! -x $var ] ; then
    return 1
   fi
  elif ! in_path $var $PATH ; then
   return 2
  fi
 fi
}

 
if [ $# -ne 1 ] ; then
 echo "Usage: $0 command" >&2 ; exit 1
fi

checkForCmdInPath "$1"
case $? in
 0 ) echo "$1 found in PATH"         ;;
 1 ) echo "$1 not found or not executable"  ;;
 2 ) echo "$1 not found in PATH"       ;;
esac

exit 0

這腳本目的是用來檢測輸入的選項$1是否在PATH中。


這腳本有幾個地方值得注意的:
1)它運用了函數(shù)嵌套,在checkForCmdInPath里嵌套了in_path函數(shù)。
2)if [ "${var%${var#?}}" = "/" ] 這語句中的${var%${var#?}}是顯示變量的第一個字符,也可以用${varname:1:1} 或$(echo $var | cut -c1)替代。
3) elif ! in_path $var $PATH ; then 這意思是如果in_path $var $PATH 執(zhí)行結(jié)果不為0的話則
問題:
發(fā)現(xiàn)輸入 echo , echo_err, /etco_err 都返回正確結(jié)果,但輸入 /etc/echo_right (存在著執(zhí)行文件但不在PATH中)卻返回found in PATH。我想這腳本還有需要完善的地方。

相關(guān)文章

  • Linux rpm命令參數(shù)使用大全(經(jīng)典)

    Linux rpm命令參數(shù)使用大全(經(jīng)典)

    RPM是RedHat Package Manager(RedHat軟件包管理工具)類似Windows里面的“添加/刪除程序”,本篇文章給大家介紹linux rpm命令參數(shù)使用大全,感興趣的朋友一起學(xué)習(xí)吧
    2015-11-11
  • shell讀取配置文件的方式sed命令詳解

    shell讀取配置文件的方式sed命令詳解

    在編寫啟動腳本時,涉及到讀取配置文件,特地記錄下shell腳本讀取啟動文件的方式,這篇文章主要介紹了shell讀取配置文件-sed命令,需要的朋友可以參考下
    2023-04-04
  • Linux中多線程詳解及簡單實例

    Linux中多線程詳解及簡單實例

    這篇文章主要介紹了Linux中多線程詳解及簡單實例的相關(guān)資料,這里對線程概念及優(yōu)缺點做了詳細介紹并說明如何創(chuàng)建和應(yīng)用,需要的朋友可以參考下
    2017-07-07
  • Linux 分區(qū)初始化為物理卷,把物理卷加入卷組的方法

    Linux 分區(qū)初始化為物理卷,把物理卷加入卷組的方法

    下面小編就為大家?guī)硪黄狶inux 分區(qū)初始化為物理卷,把物理卷加入卷組的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • shell實現(xiàn)學(xué)生成績管理系統(tǒng)

    shell實現(xiàn)學(xué)生成績管理系統(tǒng)

    這篇文章主要為大家詳細介紹了shell實現(xiàn)學(xué)生成績管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Shell腳本實現(xiàn)查殺子進程、僵尸進程

    Shell腳本實現(xiàn)查殺子進程、僵尸進程

    這篇文章主要介紹了Shell腳本實現(xiàn)查殺子進程、僵尸進程,本文直接給出實現(xiàn)代碼,實現(xiàn)遞歸找到導(dǎo)致進程僵死的最底層子進程并殺除,需要的朋友可以參考下
    2015-01-01
  • linux文件目錄默認權(quán)限(詳解)

    linux文件目錄默認權(quán)限(詳解)

    下面小編就為大家?guī)硪黄猯inux文件目錄默認權(quán)限(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • 詳解shell 變量的高級用法示例

    詳解shell 變量的高級用法示例

    這篇文章主要介紹了詳解shell 變量的高級用法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Linux命令每天必學(xué)之 useradd/adduser 新增用戶

    Linux命令每天必學(xué)之 useradd/adduser 新增用戶

    Linux下useradd或adduser命令用來建立用戶帳號和創(chuàng)建用戶的起始目錄,使用權(quán)限是超級用戶。接下來通過本文給大家介紹每天必學(xué)Linux命令之 useradd/adduser 新增用戶的相關(guān)知識,需要的朋友參考下吧
    2018-10-10
  • shell腳本中 /dev/null 的用法小結(jié)

    shell腳本中 /dev/null 的用法小結(jié)

    /dev/null 通常被用于丟棄不需要的輸出流,或作為用于輸入流的空文件,這些操作通常由重定向完成,任何你想丟棄的數(shù)據(jù)都可以寫入其中,本文重點給大家介紹shell腳本中 /dev/null 的用法小結(jié),感興趣的朋友一起看看吧
    2021-09-09

最新評論

子长县| 盱眙县| 廉江市| 鹤山市| 鄢陵县| 读书| 昆明市| 景德镇市| 通河县| 杭锦旗| 密云县| 南平市| 崇阳县| 连平县| 平谷区| 平顺县| 海安县| 乐陵市| 新余市| 株洲市| 长沙县| 梧州市| 新田县| 湖北省| 辽阳市| 金昌市| 昭平县| 扬中市| 英超| 慈利县| 射阳县| 青海省| 琼结县| 固阳县| 兴宁市| 宝坻区| 武城县| 长寿区| 故城县| 桦川县| 蓬溪县|