gpt4 book ai didi

bash 脚本来更改目录并使用参数执行命令

转载 作者:行者123 更新时间:2023-11-29 08:54:14 27 4
gpt4 key购买 nike

我正在尝试执行以下任务:编写一个名为 changedir 的 shell 脚本,它接受一个目录名、一个命令名和(可选的)一些额外的参数。然后脚本将更改为指示的目录,并且执行由提供的参数指示的命令。

举个例子:

$ sh changedir /etc ls -al

这应该更改为 /etc 目录并运行命令 ls -al

到目前为止我有:

#!/bin/sh
directory=$1; shift
command=$1; shift
args=$1; shift
cd $directory
$command

如果我像 sh changedir/etc ls 这样运行上面的命令,它会更改并列出目录。但是,如果我向 ls 添加参数,它就不起作用。我需要做什么来纠正它?

最佳答案

您似乎忽略了命令的其余参数。

如果我理解正确,你需要做这样的事情:

#!/bin/sh
cd "$1" # change to directory specified by arg 1
shift # drop arg 1
cmd="$1" # grab command from next argument
shift # drop next argument
"$cmd" "$@" # expand remaining arguments, retaining original word separations

一个更简单、更安全的变体是:

#!/bin/sh
cd "$1" && shift && "$@"

关于bash 脚本来更改目录并使用参数执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8369411/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com