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

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

linux for循環(huán)

linux for循環(huán)

qq_愛(ài)上你_0 2017-05-13 16:17:13
cd /root/testfor i in $(ls *.tar.gz *.gz)?????? do?????????? tar -zxf $i????? done為什么(ls *.tar.gz *.gz)前面要加$,不加行不行
查看完整描述

2 回答

?
onemoo

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

for 語(yǔ)句中的 in 后面的內(nèi)容就是需要被循環(huán)的哪些項(xiàng)。 比如?for i in A B C 在循環(huán)時(shí),i 就分別是 A、B、C 這三個(gè)單詞。

你理解這個(gè) for 循環(huán)里的 i 是要在哪些項(xiàng)里循環(huán)嗎?


你的例子中這些項(xiàng)就是?$(ls *.tar.gz *.gz) 這個(gè)東西。

先不管 $(),單看?ls *.tar.gz *.gz,這是一個(gè) ls 命令,會(huì)列出當(dāng)前目錄下所有的 .tar.gz .gz 結(jié)尾的文件。而所列出的這些文件名就是需要循環(huán)的項(xiàng)。

也就是說(shuō)你想要的循環(huán)項(xiàng)不是“l(fā)s *.tar.gz *.gz”這三個(gè)字,而是這句 ls 命令的執(zhí)行結(jié)果。

像這樣,想要在 bash 腳本中得到一個(gè)命令的執(zhí)行結(jié)果,叫做“命令替換”。它的語(yǔ)法就是用 $( ?) 把命令括起來(lái),到腳本運(yùn)行時(shí)這里就會(huì)替換為該命令的執(zhí)行結(jié)果了。

所以你這里既然需要的是 ls 的執(zhí)行結(jié)果,那就要寫?$(ls *.tar.gz *.gz)。

既然 $(...) 是“命令替換”的語(yǔ)法格式,那當(dāng)然不能去掉 $ 了。


多說(shuō)一些:

如果去掉 $ 會(huì)怎么樣呢? ?只剩下 (ls *.tar.gz *.gz),這里出現(xiàn)小括號(hào)是不合法的,所以腳本在執(zhí)行到這里時(shí)會(huì)直接報(bào)錯(cuò)。


再多說(shuō)一些:

前面說(shuō) in 后面的這些“字”就是循環(huán)項(xiàng)。 其實(shí)呢,for 語(yǔ)句會(huì)嘗試對(duì)這些“字”做“路徑名展開(kāi)”?!奥窂矫归_(kāi)”就是指展開(kāi)那些路徑通配符 * ? 什么的。

所以如果你在 in 后面直接寫?*.tar.gz,這里會(huì)直接被替換為所有 *.tar.gz 結(jié)尾的文件名,這樣你甚至不需要用 ls 命令來(lái)幫你列出它們。

所以這句你直接寫成?for i in *.tar.gz *.gz 也是可以的。

但有一點(diǎn):如果沒(méi)能成功進(jìn)行路徑名展開(kāi)(也就是說(shuō)目錄下沒(méi)有這樣的文件),那 *tar.gz(或 *.gz)還是會(huì)被當(dāng)作一個(gè)單純的字來(lái)用。


最后多說(shuō)一點(diǎn):

對(duì)于前面一人的回答。$ 放在變量名前才是“變量展開(kāi)”。而這里根本就沒(méi)有變量的事,這只是“命令替換”而已。

查看完整回答
反對(duì) 回復(fù) 2017-06-29
?
孤獨(dú)的小豬

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

不加$符號(hào)當(dāng)然不可以了,shell里面加$符號(hào)才知道這是變量,想得到返回值

查看完整回答
1 反對(duì) 回復(fù) 2017-06-27
  • 2 回答
  • 0 關(guān)注
  • 2038 瀏覽
慕課專欄
更多

添加回答

舉報(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)