"if"ステートメントでコマンドを実行し、成功すると追加の手順を実行します。

プロンプトで指定されたフルパスに基づいてディレクトリを生成するプログラムを実行しようとしていますが、ディレクトリがすでに存在する場合はエラー(「ディレクトリはすでに存在します」)を返し、再帰関数。

私が試したことは次のとおりです。test1次のようなファイルがあるとしましょう。

#!/bin/bash
echo "enter the directory name"
read ab
check(){
if (( echo `mkdir $ab` 2>/dev/null )); then
  echo "directory created "
  echo `ls -ld $ab`
  exit
else
  echo "try again "
  echo "enter new value for directory:"
  read ab
  check
fi
}
check

ここでの問題は、ディレクトリが存在する場合はプログラムが正常に動作しますが、存在しない場合はディレクトリを作成し、プログラムの別の部分に移動することです。

ベストアンサー1

エコはいつも成功します。それとサブシェルがない場合:

#!/bin/bash
echo "enter the directory name"
read ab
check(){
    if mkdir "$ab" 2>/dev/null; then
      echo "directory created "
      ls -ld "$ab"
      exit
    else
      echo "try again "
      echo "enter new value for directory: "
      read ab
      check
    fi
}
check

おすすめ記事