第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

測(cè)試一個(gè)glob是否在bash中有任何匹配

測(cè)試一個(gè)glob是否在bash中有任何匹配

測(cè)試一個(gè)glob是否在bash中有任何匹配如果我想檢查是否存在單個(gè)文件,我可以使用test -e filename或測(cè)試它[ -e filename ]。假設(shè)我有一個(gè)glob,我想知道是否存在名稱與glob匹配的文件。glob可以匹配0個(gè)文件(在這種情況下我不需要做任何事情),或者它可以匹配1個(gè)或多個(gè)文件(在這種情況下我需要做一些事情)。如何測(cè)試glob是否有匹配?(我不關(guān)心有多少匹配,如果我能用一個(gè)if語(yǔ)句而沒(méi)有循環(huán)(僅僅因?yàn)槲野l(fā)現(xiàn)最可讀)這樣做是最好的。(test -e glob*如果glob匹配多個(gè)文件,則失敗。)
查看完整描述

3 回答

?
阿晨1998

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊

Bash特定解決方案:

compgen -G "<glob-pattern>"

逃離模式或它將被預(yù)先擴(kuò)展為匹配。

退出狀態(tài)是:

  • 1表示不匹配,

  • 0表示“一場(chǎng)或多場(chǎng)比賽”

stdout與glob匹配的文件列表。
我認(rèn)為這是簡(jiǎn)潔性和最小化潛在副作用的最佳選擇。

更新:請(qǐng)求的示例用法。

if compgen -G "/tmp/someFiles*" > /dev/null; then
    echo "Some files exist."fi


查看完整回答
反對(duì) 回復(fù) 2019-08-26
?
臨摹微笑

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊

nullglob shell選項(xiàng)確實(shí)是一種基礎(chǔ)。

為了避免需要對(duì)nullglob狀態(tài)進(jìn)行繁瑣的保存和恢復(fù),我只在擴(kuò)展glob的子shell中設(shè)置它:

if test -n "$(shopt -s nullglob; echo glob*)"then
    echo foundelse
    echo not foundfi

為了更好的可移植性和更靈活的通配,請(qǐng)使用find:

if test -n "$(find . -maxdepth 1 -name 'glob*' -print -quit)"then
    echo foundelse
    echo not foundfi

顯式-print -quit操作用于查找而不是默認(rèn)的隱式-print操作,以便find在找到與搜索條件匹配的第一個(gè)文件后立即退出。在大量文件匹配的情況下,這應(yīng)該比echo glob*或者運(yùn)行得快得多,ls glob*并且它還避免了擴(kuò)展命令行過(guò)度填充的可能性(一些shell具有4K長(zhǎng)度限制)。

如果發(fā)現(xiàn)感覺(jué)像是矯枉過(guò)正,并且可能匹配的文件數(shù)量很少,請(qǐng)使用stat:

if stat -t glob* >/dev/null 2>&1then
    echo foundelse
    echo not foundfi


查看完整回答
反對(duì) 回復(fù) 2019-08-26
  • 3 回答
  • 0 關(guān)注
  • 652 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)