簡體   English   中英

Bash 變量賦值

[英]Bash variable assignment

我有一個基本腳本來編輯 ~/.config 中的配置文件 - 它適用於cd行,但這似乎是多余的:

dir=$HOME/.config/$1
if [ ! -d "$dir" ]; then :
    else 
    cd "$dir" && 
    for file in * ; do
        case "$file" in
        conf | config | *.cfg | *rc)  $EDITOR "$file" ;;
        *)  :  ;;
        esac
    done
    cd - 1>/dev/null;
fi

將其更改為使用變量"$dir"失敗。 我究竟做錯了什么?

dir=$HOME/.config/$1
if [ ! -d "$dir" ]; then :
    else 
    for file in "$dir" ; do
        case "$file" in
        conf | config | *.cfg | *rc)  $EDITOR "$file" ;;
        *)  :  ;;
        esac
    done;
fi

您不會在$dir中查找文件,而只是列出$dir本身。 試試$dir/*

您的第一個版本在目錄上做了一個* ,產生目錄中所有文件的列表。 您的第二個版本在列表中只有一個條目 --- 目錄本身,而不是其內容。

你不能只使用“$dir”,因為它只給出了一個項目:目錄。 您需要 $dir/*,但這也包括路徑,因此您必須將其剝離以僅比較文件名:

...
for file in $dir/*; do
    filename=`basename $file`
    case $filename in
    ...

暫無
暫無

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

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