更改目录以执行脚本

更改目录以执行脚本

在我的脚本中,我创建一个目录,并需要在该目录中执行后续命令。

下面的脚本创建一个目录,但它调用的下一个脚本 ( 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

$1请注意第 9 行和第 10 行周围的双引号。$1如果没有这些,则会发生分词(以及其他内容),导致参数mkcdir分裂。我还在第 4 行添加了引号$1,因为虽然不会发生任何不好的事情(毕竟这只是一个echo命令),但某些扩展类型可能会导致混乱。例如,如果$1包含星号 ( *),它将扩展到当前目录中的所有文件,这当然不是您要查找的内容。

除此之外,第一行的 hashbang 并不是一个坏主意,但这并不重要,特别是如果您无论如何都使用 bash。

相关内容