スクリプトを実行するディレクトリを変更します。

スクリプトを実行するディレクトリを変更します。

私のスクリプトでは、ディレクトリを作成し、そのディレクトリから後続のコマンドを実行する必要があります。

以下のスクリプトはディレクトリを生成しますが、このスクリプトが呼び出す次のスクリプト(repo init)はそのディレクトリで実行されません。

mkcdir ()
{
    echo "creating directory" $1
    mkdir -p -- ~/"$1" &&
      cd -P -- ~/"$1"
}

mkcdir $1
repo init -u [email protected]:P0/manifest.git -b refs/tags/$1
repo sync

答え1

あなたのスクリプトはほぼ正確です。修正されたバージョンは次のとおりです。

#!/usr/bin/env bash
mkcdir ()
{
    echo "creating directory" "$1"
    mkdir -p -- ~/"$1" &&
      cd -P -- ~/"$1"
}

mkcdir "$1"
repo init -u [email protected]:P0/manifest.git -b refs/tags/"$1"
repo sync

$19行と10行の周りに二重引用符があります。$1これがなければ、トークン化が発生し、引数が分割さmkcdirれます。また、4行目に引用符を追加しました。$1悪いことは起こりませんが(echo最終的には命令に過ぎないので)、特定の拡張タイプは混乱を引き起こす可能性があるためです。たとえば、$1アスタリスク(*)を含めると、現在のディレクトリ内のすべてのファイルに展開されますが、これは確かに望むものではありません。

それ以外の最初の行のhashbangは悪い考えではありませんが、特にbashを使用している場合はあまり問題になりません。

関連情報