ファイル名のスペースを処理する方法の 1 つは、ファイル名を単一引用符 "'" で囲むことだと理解しています。
「echo.sh」と呼ばれる次のコードは、スペースを含むファイル名を含むディレクトリで機能しますが、プログラム「ls.sh」は機能しません。唯一の違いは「echo」が「ls」に置き換えられているのはなぜですか?
echo.sh
#!/bin/sh
for f in *
do
echo "'$f'"
done
プロデュース:
'ab c'
'de f'
'echo.sh'
'ls.sh'
しかし、「ls.sh」は失敗します:
#!/bin/sh
for f in *
do
ls "'$f'"
done
プロデュース:
ls: 'ab c' にアクセスできません: そのようなファイルまたはディレクトリはありません
ls: 'de f' にアクセスできません: そのようなファイルまたはディレクトリはありません
ls: 'echo.sh' にアクセスできません: そのようなファイルまたはディレクトリはありません
ls: ' にアクセスできません' ls.sh': そのようなファイルまたはディレクトリはありません