7

glob パターンがどのファイルとも一致しない場合はbash、リテラル パターンを返します。

bash-4.1# echo nonexistent-file-*
nonexistent-file-*
bash-4.1#

シェル オプションを設定することでデフォルトの動作を変更できるため、nullglob一致するものがない場合は null 文字列が返されます。

bash-4.1# shopt -s nullglob
bash-4.1# echo nonexistent-file-*

bash-4.1# 

に同等のオプションはありますashか?

bash-4.1# ash
~ # echo nonexistent-file-*
nonexistent-file-*
~ # shopt -s nullglob
ash: shopt: not found
~ # 
4

2 に答える 2

4

nullglob灰やダッシュなどのないシェルの場合:

IFS="`printf '\n\t'`"   # Remove 'space', so filenames with spaces work well.

# Correct glob use: always use "for" loop, prefix glob, check for existence:
for file in ./* ; do        # Use "./*", NEVER bare "*"
    if [ -e "$file" ] ; then  # Make sure it isn't an empty match
        COMMAND ... "$file" ...
    fi
done

出典:シェルのファイル名とパス名:正しく行う方法キャッシュ済み

于 2011-01-29T21:12:31.680 に答える