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

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

蒂爾德報(bào)價(jià)

蒂爾德報(bào)價(jià)

我編寫了一個腳本,該腳本必須在用戶定義的目錄中找到一些可能包含波浪號的文件(因此可能有user_defined_directory='~/foo')。構(gòu)造看起來像found_files=$(find "$user_defined_directory" -type f … )我使用引號來覆蓋該路徑中的可能空格,但是根據(jù)手冊頁,代字號擴(kuò)展無法在引號中起作用。我知道:運(yùn)算符可能可以進(jìn)行這種擴(kuò)展,但是我不知道在這里如何使用它。從用戶$ HOME目錄中的另一個配置文件獲取“用戶定義目錄”。它沒有作為參數(shù)傳遞給我的腳本,而是從我編寫的腳本中的另一個配置進(jìn)行解析的。
查看完整描述

3 回答

?
臨摹微笑

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

您可以使用"${user_defined_directory/#~/$HOME}"當(dāng)前用戶的主目錄替換字符串開頭的“?”。請注意,這不會處理~username/subdir格式,只能處理純格式~。如果需要處理更復(fù)雜的版本,則需要編寫一個更復(fù)雜的轉(zhuǎn)換器。


查看完整回答
反對 回復(fù) 2019-10-22
?
心有法竹

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個贊

在給出一些相當(dāng)合理的假設(shè)的情況下,此方法有效,但它遠(yuǎn)非顯而易見的代碼(而且也不是單行代碼):


# Working function - painful, but can you simplify any of it?

# NB: Assumes that ~user does not expand to a name with double spaces or

#     tabs or newlines, etc.


expand_tilde()

{

    case "$1" in

    (\~)        echo "$HOME";;

    (\~/*)      echo "$HOME/${1#\~/}";;

    (\~[^/]*/*) local user=$(eval echo ${1%%/*})

                echo "$user/${1#*/}";;

    (\~[^/]*)   eval echo ${1};;

    (*)         echo "$1";;

    esac

}


# Test cases


name1="~/Documents/over  enthusiastic"

name2="~crl/Documents/double  spaced"

name3="/work/whiffle/two  spaces  are  better  than one"


expand_tilde "$name1"

expand_tilde "$name2"

expand_tilde "$name3"

expand_tilde "~"

expand_tilde "~/"

expand_tilde "~crl"

expand_tilde "~crl/"


# This is illustrative of the 'normal use' of expand_tilde function

x=$(expand_tilde "$name1")

echo "x=[$x]"

在我的機(jī)器(有一個用戶crl)上運(yùn)行時(shí),輸出為:


/Users/jleffler/Documents/over  enthusiastic

/Users/crl/Documents/double  spaced

/work/whiffle/two  spaces  are  better  than one

/Users/jleffler

/Users/jleffler/

/Users/crl

/Users/crl/

x=[/Users/jleffler/Documents/over  enthusiastic]

該功能分別tilde_expansion處理不同情況。第一個子句處理一個值~并簡單地替換$HOME。第二種情況是偏執(zhí)狂:~/映射到$HOME/。第三個處理~/anything(包括一個空的“任何東西”)。下一種情況處理~user。包羅萬象*處理其他所有問題。


請注意,該代碼做出了(合理的)假設(shè),即~user不會擴(kuò)展為包含任何雙精度空格,任何制表符或換行符(以及可能還有其他類似空格的字符)的值。如果您必須解決這個問題,生活將是地獄。


請注意chdir()主目錄的答案,該答案說明POSIX需要~擴(kuò)展為當(dāng)前值$HOME,但~user必須從密碼數(shù)據(jù)庫擴(kuò)展為主目錄的值。


查看完整回答
反對 回復(fù) 2019-10-22
?
慕的地6264312

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

提爾德(Tilde)絕對不會在報(bào)價(jià)內(nèi)擴(kuò)展??赡苓€有其他bash技巧,但是在這種情況下,我要做的是:


find ~/"$user_defined_directory" -type f

即,將~/引號外的引號移開,并將其余路徑保留在引號中。


查看完整回答
反對 回復(fù) 2019-10-22
  • 3 回答
  • 0 關(guān)注
  • 583 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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