溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

通過(guò)shell腳本怎么循環(huán)進(jìn)入目錄執(zhí)行命令

發(fā)布時(shí)間:2021-05-18 16:25:22 來(lái)源:億速云 閱讀:300 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

通過(guò)shell腳本怎么循環(huán)進(jìn)入目錄執(zhí)行命令?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

相對(duì)應(yīng)的目錄結(jié)構(gòu)如下;

laravel框架的目錄結(jié)構(gòu)為:/webserver/aaa/www/storage,vendor,bootstrap

thinkphp框架目錄結(jié)構(gòu)為:/webserver/bbb/www/App/Runtime

laravel和thinkphp項(xiàng)目都有好多,不可能每次一個(gè)個(gè)進(jìn)入項(xiàng)目的目錄設(shè)置權(quán)限,因此還是需要執(zhí)行shell腳本進(jìn)行操作。

第一次進(jìn)行操作的時(shí)候,進(jìn)入/webserver/,然后執(zhí)行下面的代碼,可以實(shí)現(xiàn)設(shè)置laravel和thinkphp項(xiàng)目相應(yīng)的目錄權(quán)限為777。

thinkphp框架Runtime目錄批量設(shè)置777權(quán)限

for dir in `ls`; do     #歷遍ls命令顯示目錄
 cd $dir;       #進(jìn)入某個(gè)目錄
 if [ -d "www/App" ];then   
 cd www/App;      #進(jìn)入App目錄
 chmod -R 777 Runtime;   #設(shè)置權(quán)限
 cd ../../../;     #返回到webserver目錄
 else        #表示如果不存在App目錄,就直接返回webserver目錄
 cd ../;       #直接返回webserver目錄。
 fi
done

#第三行注釋?zhuān)簷z測(cè)是否有App這個(gè)目錄,如果存在,繼續(xù)往下執(zhí)行。-d參數(shù)為檢測(cè)是否為目錄。同理,-f參數(shù)檢測(cè)是否為目錄, !-d 參數(shù)檢測(cè)目錄如果不存在,則執(zhí)行。
一些注釋同理

laravel框架 storage vendor bootstrap 目錄批量設(shè)置777權(quán)限

for dir in `ls`; do
 cd $dir;
 if [ -d "www/bootstrap" ];then
 cd www;
 chmod -R 777 storage vendor bootstrap;
 cd ../../;
 else 
 cd ../;
 fi
done

這樣操作后,還是有一定的不足,因?yàn)槊看味急仨氁M(jìn)入/webserver目錄執(zhí)行,還有改進(jìn)的地方,可以在任何地方執(zhí)行,把上面代碼保存為shell腳本執(zhí)行即可。

因此改進(jìn)代碼如下:

thinkphp框架Runtime目錄批量設(shè)置777權(quán)限

#/bin/sh
pwd="/webserver"       #初始化目錄
for dir in $(ls $pwd); do    #循環(huán)目錄
 cd $dir;
 if [ -d "www/App" ];then
 cd www/App;
 chmod -R 777 Runtime;
 cd ../../../;
 else 
 cd ../;
 fi
done

laravel框架 storage vendor bootstrap 目錄批量設(shè)置777權(quán)限

#/bin/sh
pwd="/webserver"       #初始化目錄
for dir in $(ls $pwd); do    #循環(huán)目錄
 cd $dir;
 if [ -d "www/bootstrap" ];then
 cd www;
 chmod -R 777 storage vendor bootstrap;
 cd ../../;
 else 
 cd ../;
 fi
done

看完上述內(nèi)容,你們掌握通過(guò)shell腳本怎么循環(huán)進(jìn)入目錄執(zhí)行命令的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI