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

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

如何將“ find”命令結(jié)果存儲(chǔ)為Bash中的數(shù)組

如何將“ find”命令結(jié)果存儲(chǔ)為Bash中的數(shù)組

我試圖將結(jié)果保存find為數(shù)組。這是我的代碼:#!/bin/bashecho "input : "read inputecho "searching file with this pattern '${input}' under present directory"array=`find . -name ${input}`len=${#array[*]}echo "found : ${len}"i=0while [ $i -lt $len ]doecho ${array[$i]}let i++done我在當(dāng)前目錄下得到2個(gè).txt文件。所以我期望'2'作為的結(jié)果${len}。但是,它打印1。原因是將所有結(jié)果都find作為一個(gè)元素。我怎樣才能解決這個(gè)問題?PS我發(fā)現(xiàn)了幾個(gè)解決方案,在計(jì)算器上有關(guān)類似問題。但是,它們有些不同,因此我無法申請(qǐng)。我需要在循環(huán)之前將結(jié)果存儲(chǔ)在變量中。再次感謝。
查看完整描述

3 回答

?
白衣染霜花

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

如果您使用bash4或更高版本,您可以取代你使用的find有


shopt -s globstar nullglob

array=( **/*"$input"* )

通過**啟用的模式globstar匹配0個(gè)或更多目錄,從而允許該模式匹配當(dāng)前目錄中的任意深度。如果沒有該nullglob選項(xiàng),則模式(在參數(shù)擴(kuò)展之后)將按字面意義處理,因此,如果沒有匹配項(xiàng),則您將擁有一個(gè)包含單個(gè)字符串而不是一個(gè)空數(shù)組的數(shù)組。


dotglob如果您想遍歷隱藏的目錄(如.ssh)并匹配隱藏的文件(如.bashrc),也將選項(xiàng)添加到第一行。


查看完整回答
反對(duì) 回復(fù) 2019-11-12
?
慕的地8271018

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

Bash 4.4 -d為readarray/ 引入了一個(gè)選項(xiàng)mapfile,因此現(xiàn)在可以通過以下方式解決


readarray -d '' array < <(find . -name "$input" -print0)

一種適用于任意文件名(包括空格,換行符和通配符)的方法。


從手冊(cè)中(省略其他選項(xiàng)):


mapfile [-d delim] [array]

-d

的第一個(gè)字符delim用于終止每個(gè)輸入行,而不是換行符。如果delim為空字符串,mapfile則在讀取NUL字符時(shí)將終止一行。


并且readarray只是的同義詞mapfile。


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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