スペースを含む変数でコマンドを正しくテストする方法は?

スペースを含む変数でコマンドを正しくテストする方法は?

テストを作成しようとしていますが、ロジックは次のとおりです。

If mkdir command is successfully executed perform the next actions

私が持っているものは次のとおりです。

FILEPATH=/home/Documents/projectDirectory
CREATE_DIRECTORY=mkdir $FILEPATH

テストコマンド:

if [ -e $FILEPATH ]; then
    echo "${FILEPATH} exists.."
    else 
        #Create the folder: Test it if is created , else exit gracefully.
        if [ -e "${CREATE_COMMAND}" ]; then
        echo "File created ${FILEPATH}"
        else
            echo "Error creating the filePath..exiting.."
            error_exit "Error creating the filePath..exiting.."
        fi
fi

ベストアンサー1

なぜこれを行うのかはよくわかりませんが、考えられる解決策は次のとおりです。

FILEPATH=/home/Documents/projectDirectory
CREATE_DIRECTORY="mkdir $FILEPATH 2>/dev/null"
eval $CREATE_DIRECTORY
if [[ $? -eq 0 ]]; then
 echo "Directory created"
else
 echo "Directory already exists"
fi

これによりフォルダが作成され、エラーメッセージが表示されずに/ dev / nullに渡されます。その後、ifステートメントは前のコマンドの状態を確認し、成功したことを知らせます(0)。

おすすめ記事