Bash变量赋值

时间:2011-07-17 21:18:36

标签: bash variables

我有一个基本脚本来编辑〜/ .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

3 个答案:

答案 0 :(得分:1)

你没有对$dir内的文件进行全局处理,只列出$dir本身。试试$dir/*

答案 1 :(得分:0)

您的第一个版本在目录上执行*,生成目录中所有文件的列表。你的第二个版本在列表中只有一个条目---目录本身,而不是它的内容。

答案 2 :(得分:0)

你不能只使用“$ dir”,因为它只提供一个项目:目录。你需要$ dir / *,但也包括路径,所以你必须将其剥离以仅比较文件名:

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