現在のディレクトリを変数に割り当て中にエラーが発生しました。

現在のディレクトリを変数に割り当て中にエラーが発生しました。
    #!/usr/bin/env bash  
    if [ "$outDir" == "" ]
    then
        echo "$PWD" ,"We are here ", $outDir ," with " 
        "$outDir" = "$PWD"
        echo "Yes"
    fi

ターミナル出力:

/home/Documents/folderName ,We are here , , with

./pipeline.sh: line 28: : command not found

Yes

現在、ディレクトリを$ outDirに割り当てることはできません。

私は試しましたが、"outDir" = "$PWD"何も$outDir="$PWD"動作"$outDir"=$PWDしません。しかし、echo $PWD非常にうまく動作します。

なぜできないの働く

ベストアンサー1

$PWD設定されていない値またはnull値を使用してイベントを割り当てたいと思います$outDir。そうですか?$outDir

私は以下が同じだと思います。

printf 'We are here: "%s"\n $outDir = "%s"\n' \ 
    "$PWD" "${outDir:=$PWD}"

$outDir割り当てられている場合は2番目のパラメータの値を印刷し、そうでない場合は値printfも割り当てて印刷します。$PWD$outDir

もちろん、ここでは変数呼び出しは${outDir:=$PWD}nullまたは設定されていない値に対して独自に変更されますが、その値が正しいことを確認しません。実際にはディレクトリです。上記の小切手も同様です。おそらく、次のいずれかより良いものは次のとおりです。

cd -- "${outDir:=$PWD}" || exit; cd - >/dev/null

cdユーザーの選択が正しいことを確認するだけでなく、$outDirユーザーにアクセス権がない場合はエラーも印刷します。テストが成功すると、cd -テスト前の位置に戻ります。cdリダイレクトは>/dev/null単にcd -印刷を防ぐためのものです$PWD。それ以外の場合は、この操作を行います。

ただし、ユーザーが1つを指定しない場合、$outDirその値はbeforeとして指定されます。$PWDつまり、テストが成功し、cd $PWD2つの連続したコマンドがここでも-変わったことを意味します。$OLDPWD$PWD

おすすめ記事