簡體   English   中英

如何在bash中使用grep匹配文件夾名稱並在if條件下使用它?

[英]How to match a folder name and use it in an if condition using grep in bash?

for d in */ ; do
    cd $d
    NUM = $(echo ${PWD##*/} | grep -q "*abc*");
    if [[ "$NUM" -ne "0" ]]; then
        pwd
    fi
    cd ..
done

在這里,我嘗試將文件夾名稱與文件夾名稱中的某些子字符串'abc'匹配,並檢查grep的輸出是否不為0。但這給我一個錯誤,提示讀取NUM: command not found


評論中已解決錯誤。 NUM = $(echo ${PWD##*/} | grep -q "*abc*"); 應該為NUM=$(echo ${PWD##*/} | grep -q "*abc*");


為了澄清,核心問題將是能夠將當前目錄名與模式匹配。

您可能只需將代碼

if grep -q "*abc*" <<< "${PWD##*/}" 2>/dev/null; then
   echo "$PWD"
   # Your rest of the code goes here
fi

您可以在if條件中直接使用grep的退出代碼,而無需在此處使用臨時變量(此處$NUM )。 如果grep能夠找到匹配項,則條件將通過。 這里的字符串<<< ,會將輸入傳遞給grep類似於使用管道的echo 2>/dev/null grep拋出時僅抑制任何錯誤( stderr - file descriptor 2 )!


作為OP的附加要求,否定條件檢查就可以了

if ! grep -q "*abc*" <<< "${PWD##*/}" 2>/dev/null; then

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM