Linux 如何在自定义bash函数中作为dir路径的一部分传递参数?
我想定义一个自定义bash函数,它获取一个参数作为dir路径的一部分 我不熟悉bash脚本。网上提供的代码让我有些困惑,或者工作不正常 例如,预期的bash脚本如下所示: 功能我的拷贝{ sudo cp~/workspace/{$1}~/tmp/{$2} } 如果我输入我的副本a b 然后我希望函数执行sudo cp~/workspace/a~/tmp/b 在候机楼Linux 如何在自定义bash函数中作为dir路径的一部分传递参数?,linux,bash,shell,terminal,command,Linux,Bash,Shell,Terminal,Command,我想定义一个自定义bash函数,它获取一个参数作为dir路径的一部分 我不熟悉bash脚本。网上提供的代码让我有些困惑,或者工作不正常 例如,预期的bash脚本如下所示: 功能我的拷贝{ sudo cp~/workspace/{$1}~/tmp/{$2} } 如果我输入我的副本a b 然后我希望函数执行sudo cp~/workspace/a~/tmp/b 在候机楼 提前感谢。如果您在say copy.sh文件中具有以下功能,并且您使用的是source copy.sh或。sh则函数调用my_co
提前感谢。如果您在say copy.sh文件中具有以下功能,并且您使用的是source copy.sh或。sh则函数调用my_copy将按预期工作 1美元和2美元是免费的 i、 e.当您调用my_copy a b时,$1的值为第一个命令行参数,在您的示例中为a,而$2的值为第二个命令行参数,为b。该功能将按预期工作 函数中还有一个逻辑错误,您给出了{$1}而不是${1}。它将扩展到{a}而不是函数中的,并且它将抛出一个错误,显示cp:cannot stat“~/workspace/{a}”:运行它时没有这样的文件或目录 此外,如果位置参数的数量大于10,则只需要在两者之间使用{},否则可以避免使用它。例如:${11}而不是11美元 因此,上述函数将按预期执行语句sudo cp~/workspace/a~/tmp/b
要理解这个概念,可以在脚本中尝试echo$1、echo${1}、echo{1}、echo{2}、echo${2}和echo$2,以查看结果值 如果您在say copy.sh文件中有下面的函数,并且如果您使用了source copy.sh或。sh则函数调用my_copy将按预期工作 1美元和2美元是免费的 i、 e.当您调用my_copy a b时,$1的值为第一个命令行参数,在您的示例中为a,而$2的值为第二个命令行参数,为b。该功能将按预期工作 函数中还有一个逻辑错误,您给出了{$1}而不是${1}。它将扩展到{a}而不是函数中的,并且它将抛出一个错误,显示cp:cannot stat“~/workspace/{a}”:运行它时没有这样的文件或目录 此外,如果位置参数的数量大于10,则只需要在两者之间使用{},否则可以避免使用它。例如:${11}而不是11美元 因此,上述函数将按预期执行语句sudo cp~/workspace/a~/tmp/b
要理解这个概念,可以在脚本中尝试echo$1、echo${1}、echo{1}、echo{2}、echo${2}和echo$2,以查看结果值 代码中存在语法错误。您不能调用像{$foo}这样的变量。如果1=a和2=b,则执行 sudo cp~/workspace/{$1}~/tmp/{$2} BASH将用a替换$1,用b替换$2,因此,BASH将执行 sudo cp~/workspace/{a}~/tmp/{b} 这意味着,由于没有像{a}这样名称的文件,因此该cp将失败 有几种方法可以调用变量 回声$foo echo${foo} 回声$foo echo${foo} 否则,您的代码看起来不错,应该可以工作 看看这个链接,引用变量是非常重要的。若你们想了解更多关于BASH的信息,或者晚上睡不着,试试吧,它有你们必须知道的关于BASH的一切,它也是一种很好的催眠药
PS:我知道$1、$2等是位置参数,我称之为变量,因为您将其视为变量,我的anwser可以同时应用于这两个参数。您的代码中存在语法错误。您不能调用像{$foo}这样的变量。如果1=a和2=b,则执行 sudo cp~/workspace/{$1}~/tmp/{$2} BASH将用a替换$1,用b替换$2,因此,BASH将执行 sudo cp~/workspace/{a}~/tmp/{b} 这意味着,由于没有像{a}这样名称的文件,因此该cp将失败 有几种方法可以调用变量 回声$foo echo${foo} 回声$foo echo${foo} 否则,您的代码看起来不错,应该可以工作 看看这个链接,引用变量是非常重要的。若你们想了解更多关于BASH的信息,或者晚上睡不着,试试吧,它有你们必须知道的关于BASH的一切,它也是一种很好的催眠药 PS:我知道$1、$2等是位置参数,我称之为变量,因为你把它当作一个变量,我的anwser可以同时应用于这两个参数
function my_copy() {
sudo cp ~/workspace/$1 ~/tmp/$2
}