#!/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 $PWD
2つの連続したコマンドがここでも-
変わったことを意味します。$OLDPWD
$PWD